您現在的位置是:首頁 > 武術
Maven如何將生命週期繫結至外掛?
- 由 白夜java 發表于 武術
- 2022-11-29
adv繫結外掛難嗎
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的構建過程。
例如建立專案的原始碼jar包,內建的外掛繫結關係中並沒有這個任務,我們可以用maven-source-plugin外掛的jar-no-fork目標完成這項工作,它能將專案的主程式碼打包成jar檔案。我們在pom。xml中完成這個繫結的配置:
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的話。
另外如果多個外掛目標繫結到了同一階段,那麼它們的宣告順序決定了它們的執行順序。
上一篇:增強免疫力和日耳曼人