您現在的位置是:首頁 > 武術

Maven如何將生命週期繫結至外掛?

  • 由 白夜java 發表于 武術
  • 2022-11-29
簡介可以透過maven-help-plugin檢視外掛詳細資訊,瞭解到外掛目標的預設繫結階段,命令如下:mvn help:describe -Dplugin=org

adv繫結外掛難嗎

Maven如何將生命週期繫結至外掛?

Maven如何將生命週期繫結至外掛?

Maven生命週期與外掛相互繫結,以完成實際的構建任務。與其說生命週期與外掛繫結,其實說階段與外掛目標繫結更為貼切。

例如編譯compile,它對應default生命週期下的compile階段,而外掛maven-compiler-plugin的外掛目標compile就能完成這個任務。因此,它們之間相互繫結,就能完成專案編譯的操作。

內建繫結

至於如何繫結,Maven的一些核心階段其實是內建自動繫結的,例如階段clean就預設和maven-clean-plugin:clean繫結上了,site預設和maven-site-plugin:site繫結。其他諸如test、package、install、process-resources之類熟悉或不熟悉的階段也都有預設繫結。

至於剩下的大部分階段,沒有預設繫結的它們就不會執行任何操作。

在我們執行maven操作時,控制檯其實會輸出專案構建過程中執行了哪些外掛目標,之前我們應該都沒有注意過。例如下圖是mvn clean操作的一部分輸出:顯然它執行了maven-clean-plugin外掛的clean目標,3。1。0是它的版本號。而pre-clean沒有繫結任何外掛目標,所以也沒有任何操作。

Maven如何將生命週期繫結至外掛?

自定義繫結

除了內建繫結,自然也有自定義繫結,我們可以按需配置外掛到各個階段前後,這樣可以更靈活的定製Maven的構建過程。

例如建立專案的原始碼jar包,內建的外掛繫結關係中並沒有這個任務,我們可以用maven-source-plugin外掛的jar-no-fork目標完成這項工作,它能將專案的主程式碼打包成jar檔案。我們在pom。xml中完成這個繫結的配置:

org。apache。maven。plugins maven-source-plugin 2。1。2 attach-sources verify jar-no-fork

plugins標籤

是宣告外掛的使用,裡面可以有多個

plugin標籤

,再裡面就是我們熟悉的

groupId、artifactId和version

,和依賴的座標是同樣的原理。下面的

executions標籤

就是具體執行配置了,它也可以用多個

子標籤execution

配置多個執行動作,其中的

id

是唯一標識號,

phase標籤

是要繫結到哪個階段,

goals標籤

是要執行的外掛目標,看起來它似乎也可以用多個

goal標籤

一次執行多個目標。

有時候我們不配置phase,它一樣可以成功繫結到生命週期中。因為有些外掛的目標在編寫時就已經定義了預設的繫結階段。可以透過maven-help-plugin檢視外掛詳細資訊,瞭解到外掛目標的預設繫結階段,命令如下:

mvn help:describe -Dplugin=org。apache。maven。plugins:maven-source-plugin:2。1。1 -Ddetail

在輸出很長一串的資訊中,可以看到如下的片段,Bound to phase是package,也就是這個外掛會預設繫結到package,如果沒有顯式宣告phase的話。

Maven如何將生命週期繫結至外掛?

另外如果多個外掛目標繫結到了同一階段,那麼它們的宣告順序決定了它們的執行順序。

Top