JavaShuo
欄目
標籤
Maven插件(plugin)goal的執行與生命週期(lifecycle)phase的關係
時間 2019-11-07
標籤
maven
插件
plugin
goal
執行
生命週期
lifecycle
phase
關係
欄目
Maven
简体版
原文
原文鏈接
這其實並非一個複雜的問題,可是彷佛沒有什麼資料對此作過清晰的說明,本文將對這個問題作一個詳細的解釋。
背景知識
maven對構建(build)的過程進行了抽象和定義,這個過程被稱爲構建的生命週期(lifecycle)。生命週期(lifecycle)由多個階段(phase)組成,每一個階段(phase)會掛接一到多個goal。goal是maven裏定義任務的最小單元,至關於ant裏的target。
以phase爲目標構建
以phase爲目標進行構建是最多見的,如咱們平時常常執行的mvn compile,mvn test,mvn package...等等,compile,test,package都是maven生命週期(lifecycle)裏的phase,經過mvn命令,你能夠指定一次構建執行到那一個階段,在執行過程當中,全部經歷的執行階段(phase)上綁定的goal都將獲得執行。例如,對於一個jar包應用,當執行mvn package命令時,maven從validate階段一個階段一個階段的執行,在執行到compile階段時,compiler插件的compile goal會被執行,由於這個goal是綁定在compile階段(phase)上的。這一點可從其對應的mojo類上得知:
再好比常常使用的打包插件shade,它的goal是綁定到package階段的,這樣,使用mvn package進行打包時都會執行shade的。
以goal爲目標構建
雖然以phase爲目標的構建最多見,可是有時候咱們會發現,
一些插件的goal並不適合綁定到任何階段(phase)上,或者是,這些goal每每是單獨執行,不須要同某個階段(phase)綁定在一塊兒
,好比hibernate插件的導入\導出goal多數狀況下是根據須要要手動執行的(固然,也能夠綁定到某個階段上,好比進行單元測試時,可考慮將其綁定到test階段上)。再好比jetty(6.1.26)插件,它的goal都是將打包或未打包的工程部署到jetty裏而後啓動jetty容器的,多數狀況下,人們都是獨立運行這些goal的,好比:人們但願當鍵入mvn jetty:run後,工程就能完成編譯後啓動jetty,而jetty插件也確實是這樣作的,它的run goal的mojo是這樣聲明的:
其中
@execute
phase="test-compile"指明jetty:run這一goal會促使maven先build到test-compile階段,再執行這個goal.一樣,對於jetty:run-war這個goal則要求先build到package階段再執行該goal.
而另一個例子是exec插件的exec:java.
這個goal也聲明瞭execute的phase,但倒是validate,這樣,若是代碼沒有編譯,執行這個goal就會出錯,因此多數狀況下,人們老是使用下面的方式執行的:
mvn clean compile exec:java
相關文章
1.
Maven的生命週期 命令行與生命週期
2.
maven生命週期與插件
3.
Maven的生命週期和插件(五)
4.
Maven的生命週期和插件
5.
maven的生命週期和插件
6.
maven中的生命週期和插件
7.
MAVEN的生命週期,jetty插件
8.
是goal還是phase?Maven插件(plugin)goal的執行與生命週期(lifecycle)phase的關係
9.
vue的生命週期及與其子組件生命週期執行順序
10.
maven的插件以及與生命週期的綁定原理
更多相關文章...
•
Spring Bean的生命週期
-
Spring教程
•
Maven 構建生命週期
-
Maven教程
•
Docker容器實戰(七) - 容器眼光下的文件系統
•
IntelliJ IDEA安裝代碼格式化插件
相關標籤/搜索
生命週期
請求的生命週期
vue生命週期
行的
生的
Maven插件
JDK的命令行
插件系列
一個程序猿的生命週期
Java對象的生命週期
Maven
MySQL教程
Maven教程
Docker命令大全
插件
文件系統
命令
0
分享到微博
分享到微信
分享到QQ
每日一句
每一个你不满意的现在,都有一个你没有努力的曾经。
最新文章
1.
JDK JRE JVM,JDK卸載與安裝
2.
Unity NavMeshComponents 學習小結
3.
Unity技術分享連載(64)|Shader Variant Collection|Material.SetPassFast
4.
爲什麼那麼多人用「ji32k7au4a83」作密碼?
5.
關於Vigenere爆0總結
6.
圖論算法之最小生成樹(Krim、Kruskal)
7.
最小生成樹 簡單入門
8.
POJ 3165 Traveling Trio 筆記
9.
你的快遞最遠去到哪裏呢
10.
雲徙探險中臺賽道:借道雲原生,尋找「最優路線」
本站公眾號
歡迎關注本站公眾號,獲取更多信息
相關文章
1.
Maven的生命週期 命令行與生命週期
2.
maven生命週期與插件
3.
Maven的生命週期和插件(五)
4.
Maven的生命週期和插件
5.
maven的生命週期和插件
6.
maven中的生命週期和插件
7.
MAVEN的生命週期,jetty插件
8.
是goal還是phase?Maven插件(plugin)goal的執行與生命週期(lifecycle)phase的關係
9.
vue的生命週期及與其子組件生命週期執行順序
10.
maven的插件以及與生命週期的綁定原理
>>更多相關文章<<