maven生命周期
maven有一個十分完善的生命周期模型(lifecycle)。運作maven的每個步驟都由maven預定義的,相比Ant而言,這種預定義使maven的使用變得簡單(Ant的每個步驟都要你手工去定義)。這個模型是一種标準,在不同的項目中,maven的生命周期是相同的。一般情況下,<code>mvn clean package</code> 這樣的指令是通用的。
maven有三套互相獨立的生命周期:
Clean Lifecycle 在進行真正的建構之前進行一些清理工作。
Default Lifecycle 建構的核心部分,編譯,測試,打包,部署等等。
Site Lifecycle 生成項目報告,站點,釋出站點。
說它們是互相獨立的,是指你可以隻調用clean來清理項目,僅調用site來生成項目報告。你也可以直接運作 mvn clean install site 運作所有這三套生命周期。
每套生命周期都由一組階段(Phase)組成,我們平時在指令行輸入的指令總會對應于一個特定的階段。比如,運作<code>mvn clean</code> ,這裡的clean是Clean生命周期的一個階段。運作某個階段的時候,它之前的所有階段都會被運作,
Clean生命周期一共包含了三個階段:
pre-clean 執行一些需要在clean之前完成的工作
clean 移除所有上一次建構生成的檔案
post-clean 執行一些需要在clean之後立刻完成的工作
如上面所說,我們平常執行的<code>mvn clean</code>指令時,maven會先運作pre-clean,然後運作clean。如果執行 <code>mvn post-clean</code>,則執行順序為<code>pre-clean-->clean-->post-clean</code>
pre-site 執行一些需要在生成站點文檔之前完成的工作
site 生成項目的站點文檔
post-site 執行一些需要在生成站點文檔之後完成的工作,并且為部署做準備
site-deploy 将生成的站點文檔部署到特定的伺服器上
validate
驗證項目是否正确
initialize
初始化建構狀态,如設定屬性或建立目錄。
generate-sources
生成所有包含代碼
process-sources
處理源代碼,例如過濾值。
generate-resources
生成資源
process-resources
複制并處理資源檔案,至目标目錄,準備打包。
compile
編譯項目的源代碼。
process-classes
對編譯生成的檔案做後置處理,例如Java類位元組碼增強。
generate-test-sources
生成所有測試所需的包含代碼
process-test-sources
處理測試源代碼,例如過濾值。
generate-test-resources
生成測試資源
process-test-resources
複制并處理資源檔案,至目标測試目錄。
test-compile
編譯測試源代碼。
process-test-classes
對測試代碼編譯生成的檔案做後置處理,例如Java類位元組碼增強,maven 2.0.5及以後的版本加入此階段
test
使用合适的單元測試架構運作測試。這些測試不能要求打包或部署。
prepare-package
執行所有打包之前的必須打包準備工作,maven 2.1 及以後版本加入此階段
package
将編譯的代碼打包生成可釋出的格式,如 JAR 。
pre-integration-test
執行內建測試之前的工作,這涉及一些例如設定需要的環境的工作
integration-test
如果必要,此階段會把可釋出的包部署到內建測試環境
post-integration-test
內建測試兵團操作,例如清理環境
verify
運作所有檢查,驗證包是否有效,并且符合軟體品質标準
install
将包安裝至本地倉庫,用于其它項目依賴。
deploy
将最終的包複制到遠端的倉庫,以讓其它開發人員與項目共享。
apache maven guides:Introduction to the Build Lifecycle