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.
深度學習硬件架構簡述
2.
重溫矩陣(V) 主成份分析
3.
國慶佳節第四天,談談我月收入增加 4K 的故事
4.
一起學nRF51xx 23 - s130藍牙API介紹
5.
2018最爲緊缺的十大崗位,技術崗佔80%
6.
第一次hibernate
7.
SSM項目後期添加數據權限設計
8.
人機交互期末複習
9.
現在無法開始異步操作。異步操作只能在異步處理程序或模塊中開始,或在頁生存期中的特定事件過程中開始...
10.
微信小程序開發常用元素總結1-1
本站公眾號
歡迎關注本站公眾號,獲取更多信息
相關文章
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的插件以及與生命週期的綁定原理
>>更多相關文章<<