生命周期
? maven的生命周期并不是一個整體,maven擁有三套相互獨立的生命周期,分別為clean、default和site。clean是清理項目,default是構(gòu)建項目,site是建立項目站點。
清理 clean
- pre-clean:執(zhí)行一些需要在clean之前完成的工作
- clean:移除所有上一次構(gòu)建生成的文件
- post-clean:執(zhí)行clean之后需要完成的工作
默認(rèn)default
- validate:檢查配置,構(gòu)建所需信息是否都能獲取到
- complie:編譯源代碼
- test:單元測試
- package:打包
- verify:(檢查)對集成測試的結(jié)果進(jìn)行檢查
- install:安裝打包的項目到本地倉庫
- deploy:(部署)拷貝工程包到遠(yuǎn)程倉庫
細(xì)分的話,共有23個階段。
validate : 檢查工程配置是否正確,完成構(gòu)建過程的所有必要信息是否能夠獲取到。
initialize : 初始化構(gòu)建狀態(tài),例如設(shè)置屬性。
generate-sources : 生成編譯階段需要包含的任何源碼文件。
process-sources : 處理源代碼,例如,過濾任何值(filter any value)。
generate-resources : 生成工程包中需要包含的資源文件。
process-resources : 拷貝和處理資源文件到目的目錄中,為打包階段做準(zhǔn)備。
compile : 編譯工程源碼。
process-classes : 處理編譯生成的文件,例如 Java Class 字節(jié)碼的加強和優(yōu)化。
generate-test-sources : 生成編譯階段需要包含的任何測試源代碼。
process-test-sources : 處理測試源代碼,例如,過濾任何值(filter any values)。
test-compile : 編譯測試源代碼到測試目的目錄。
process-test-classes : 處理測試代碼文件編譯后生成的文件。
test : 使用適當(dāng)?shù)膯卧獪y試框架(例如JUnit)運行測試。
prepare-package : 在真正打包之前,為準(zhǔn)備打包執(zhí)行任何必要的操作。
package : 獲取編譯后的代碼,并按照可發(fā)布的格式進(jìn)行打包,例如 JAR、WAR 或者 EAR 文件。
pre-integration-test : 在集成測試執(zhí)行之前,執(zhí)行所需的操作。例如,設(shè)置所需的環(huán)境變量。
integration-test : 處理和部署必須的工程包到集成測試能夠運行的環(huán)境中。
post-integration-test : 在集成測試被執(zhí)行后執(zhí)行必要的操作。例如,清理環(huán)境。
verify : 運行檢查操作來驗證工程包是有效的,并滿足質(zhì)量要求。
install : 安裝工程包到本地倉庫中,該倉庫可以作為本地其他工程的依賴。
deploy : 拷貝最終的工程包到遠(yuǎn)程倉庫中,以共享給其他開發(fā)人員和工程。
站點文檔創(chuàng)建 site
- pre-site
- site:生成站點文檔
- post-site
- site-deploy:將生產(chǎn)的站點文檔部
命令行與生命周期
? 三套生命周期是相互獨立的,用戶調(diào)用clean生命周期時,不會觸發(fā)default生命周期的任何階段,反之亦然。在一個生命周期中,運行某個階段的時候,它之前的所有階段都會被運行。執(zhí)行多個生命周期時,每個生命周期間使用空格分開。舉例如下:
- mvn clean
調(diào)用clean生命周期的clean階段,實際執(zhí)行pre-clean和clean階段 - mvn test
調(diào)用default生命周期的test階段,實際執(zhí)行test以及之前所有階段 - mvn clean install
調(diào)用clean生命周期的clean階段和default的install階段,實際執(zhí)行pre-clean和clean,install以及之前所有階段