Maven命令的生命週期

Maven的命令,比如mvn compile、mvn install、mvn package等,一直讓我很迷惑,如果理解了maven的默認生命週期,那麼這都不是事了。

maven默認有23個階段,如下:

生命週期階段 描述
validate(校驗) 校驗項目是否正確並且所有必要的信息可以完成項目的構建過程。
initialize(初始化) 初始化構建狀態,比如設置屬性值。
generate-sources(生成源代碼) 生成包含在編譯階段中的任何源代碼。
process-sources(處理源代碼) 處理源代碼,比如說,過濾任意值。
generate-resources(生成資源文件) 生成將會包含在項目包中的資源文件。
process-resources (處理資源文件) 複製和處理資源到目標目錄,爲打包階段最好準備。
compile(編譯) 編譯項目的源代碼。
process-classes(處理類文件) 處理編譯生成的文件,比如說對Java class文件做字節碼改善優化。
generate-test-sources(生成測試源代碼) 生成包含在編譯階段中的任何測試源代碼。
process-test-sources(處理測試源代碼) 處理測試源代碼,比如說,過濾任意值。
generate-test-resources(生成測試資源文件) 爲測試創建資源文件。
process-test-resources(處理測試資源文件) 複製和處理測試資源到目標目錄。
test-compile(編譯測試源碼) 編譯測試源代碼到測試目標目錄.
process-test-classes(處理測試類文件) 處理測試源碼編譯生成的文件。
test(測試) 使用合適的單元測試框架運行測試(Juint是其中之一)。
prepare-package(準備打包) 在實際打包之前,執行任何的必要的操作爲打包做準備。
package(打包) 將編譯後的代碼打包成可分發格式的文件,比如JAR、WAR或者EAR文件。
pre-integration-test(集成測試前) 在執行集成測試前進行必要的動作。比如說,搭建需要的環境。
integration-test(集成測試) 處理和部署項目到可以運行集成測試環境中。
post-integration-test(集成測試後) 在執行集成測試完成後進行必要的動作。比如說,清理集成測試環境。
verify (驗證) 運行任意的檢查來驗證項目包有效且達到質量標準。
install(安裝) 安裝項目包到本地倉庫,這樣項目包可以用作其他本地項目的依賴。
deploy(部署) 將最終的項目包複製到遠程倉庫中與其他開發者和項目共享。

 

如果執行一個命令,那麼此命令對應的階段之前的都會執行,比如執行命令:mvn package,那麼package之前的階段都會被執行,當然也包括package,但是後面的例如verify、install等都不會被執行

說到這裏不得不提到有三個互相不干擾的生命週期

1、clean

2、default

3、site

比如說一個命令:mvn clean install,應該很常見,clean屬於clean週期,install屬於default週期的,可以同時使用,但估計很少見到如下的命令:mvn compile install   爲什麼呢?

原因就在於compile和install都屬於default週期,只要執行了install命令,自然默認就會執行compile命令

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章