您好,登錄后才能下訂單哦!
這篇“IDEA中maven的Lifecycle和Plugins有什么區別”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“IDEA中maven的Lifecycle和Plugins有什么區別”文章吧。
IDEA 主界面右側 Maven 標簽欄有同樣的命令,比如 install
,既在 Plugins
中存在,也在 Lifecycle
中存在。到底選哪個?二者又有什么區別呢?
經過實驗,很多時候都是 Plugins
中的命令報錯,而 Lifecycle
中的命令正常執行。那么是不是說 Plugins
根本就沒有必要存在?存在了還混淆視聽?
要解答這個問題,首先要了解這兩處的命令到底有什么差異。而之前,要先了解 Maven 的生命周期、階段、插件和目標之間的關系。
Maven 的生命周期就是對所有構建過程進行抽象和統一,包含了項目的清理、初始化、編譯、測試、打包、集成測試、驗證、部署、站點生成等幾乎所有的構建步驟。
Maven 內置的三套生命周期:
Clean Lifecycle:做一些清理工作
pre-clean --> clean --> post-clean
Default LifeCycle:構建的核心部分、編譯、測試、打包、部署等
validate --> compile --> test --> package --> integration-test --> verify --> install --> deploy
Site Lifecycle:生成項目報告、站點、發布站點
pre-site --> site --> post-site --> site-deploy
每套生命周期都是一組階段組成。
Clean Lifecycle
pre-clean 執行一些需要在 clean 之前完成的工作
clean 移除所有上一次構建所生成的文件
post-clean 執行一些需要在 clean 之后立即完成的工作
Default Lifecycle
validate 驗證項目正確且所需信息都可獲得
initialize 初始化構建狀態,如:設置屬性值、創建目錄
generate-sources 生成編譯過程中需要對導入進行操作的源碼
process-sources 處理源碼,如:過濾值
generate-resources 為包中的導入依賴生成資源
process-resources 復制并處理資源文件至目標目錄,準備打包
compile 編譯項目的源代碼
process-classes 處理并測試源碼,如:過濾值
generate-test-sources
process-test-sources
generate-test-resources
process-test-resources 復制并處理資源文件,至目標測試目錄
test-compile 編譯測試源碼
process-test-classes
test 使用合適的單元測試框架運行測試。這些測試代碼不會被打包或部署
prepare-package
package 接收編譯好的代碼,打包成可發布的格式,如:jar
pre-integration-test
integration-test
post-integration-test
verify
install
Site Lifecycle
pre-site 執行一些需要在生成站點文檔之前完成的工作
site 生成項目的站點文檔
post-site 執行一些需要在生成站點文檔之后完成的工作,并為部署做準備
site-deploy 將生成的站點文檔部署到特定的服務器上
特點:階段在生命周期內具有順序性,在執行生命周期中某個階段時會先按順序執行本生命周期當前階段之前的所有階段,再執行當前階段。
例如,Clean Lifecycle
有 3 個階段,按順序依次為:
pre-clean
clean
post-clean
則若執行命令 mvn clean
實際按順序執行了 Clean Lifecycle
的 pre-clean
與 clean
。
那么如果只想執行第 2 個階段呢,那就執行命令 mvn clean:clean
(這就是下面要提到的插件:目標
的執行方式了)
一個階段由插件與目標組成。
可以理解為:
一個階段:一個步驟
插件:打成 jar 包的 java 程序
目標:插件程序的一個執行參數
即向插件程序傳入一個執行參數并執行一次該插件程序,就等于進行了一個步驟。
例子:
mvn compiler:compile
compiler
是插件,compile
是目標,compiler:compile
是一個階段。
插件:目標
表示一個特定任務,階段是生命周期中的特定步驟。
有些階段聲明綁定的插件:目標
(即通過執行相應的插件:目標
來實現),有些階段沒有聲明綁定的插件:目標
,是通過其他方式來實現的。
生命周期及包含階段,階段聲明綁定的插件:目標
如下:
1.Clean Lifecycle
順序 | 階段 | 插件:目標 |
---|---|---|
1 | pre-clean | |
2 | clean | clean:clean |
3 | post-clean |
2.Default Lifecycle
順序 | 階段 | 插件:目標 |
---|---|---|
1 | validate | |
2 | initialize | |
3 | generate-sources | |
4 | process-sources | |
5 | generate-resources | |
6 | process-resources | resources:resources |
7 | compile | compiler:compile |
8 | process-classes | |
9 | generate-test-sources | |
10 | process-test-sources | |
11 | generate-test-resources | |
12 | process-test-resources | resources:testResources |
13 | test-compile | compiler:testCompile |
14 | process-test-classes | |
15 | test | surefire:test |
16 | prepare-package | |
17 | package | |
18 | pre-integration-test | |
19 | integration-test | |
20 | post-integration-test | |
21 | verify | |
22 | install | install:install |
23 | deploy | deploy:deploy |
3.Site Lifecycle
順序 | 階段 | 插件:目標 |
---|---|---|
1 | pre-site | |
2 | site | site:site |
3 | post-site | |
4 | site-deploy | site:deploy |
在 IDEA 中使用 Lifecycle 下的 install (等價于在命令行執行 mvn install
),代表執行的是 生命周期 的一個階段(會自動先執行之前的所有階段)。
如上所示,install
階段前有 21 個階段,即 mvn install
會先執行前面的 21 個階段,之后再執行 install
這個階段。
而作為對比,IDEA 中使用 Plugin 下的 install(等價于在命令行執行 mvn install:install
),代表執行的是 插件:目標
,它單獨執行,不會先去執行之前的 21 個階段。
另外,由于 生命周期 可以和 插件:目標
一起執行,所以可以先執行 verify
生命周期(執行 1~21 階段),再執行 install:install
(第 22 階段)。所以以下兩種寫法其實最終實現效果是等價的。
mvn install mvn verify install:install
如果在Plugins里面安裝會出現問題,因為Plugins安裝,只會執行安裝操作,而maven生命周期安裝之前的操作都不會執行 ,就會安裝失敗。但是使用 Lifecycle中的install的話,在執行instal生命階段之前的說有生命周期階段,包括(clean compiler test package)
以上就是關于“IDEA中maven的Lifecycle和Plugins有什么區別”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。