1.組成部分
框架
一個典型的 Maven 構建生命週期是由如下幾個階段的序列組成的:maven
階段 | 處理 | 描述 |
---|---|---|
prepare-resources | 資源拷貝 | 本階段能夠自定義須要拷貝的資源 |
compile | 編譯 | 本階段完成源代碼編譯 |
package | 打包 | 本階段根據 pom.xml 中描述的打包配置建立 JAR / WAR 包 |
install | 安裝 | 本階段在本地 / 遠程倉庫中安裝工程包 |
當須要在某個特定階段以前或以後執行目標時,可使用 pre 和 post 來定義這個目標。post
當 Maven 開始構建工程,會按照所定義的階段序列的順序執行每一個階段註冊的目標。Maven 有如下三個標準的生命週期:單元測試
clean測試
default(or build)優化
siteui
目標表示一個特定的、對構建和管理工程有幫助的任務。它可能綁定了 0 個或多個構建階段。沒有綁定任何構建階段的目標能夠在構建生命週期以外被直接調用執行。spa
執行的順序依賴於目標和構建階段被調用的順序。例如:插件
mvn clean dependency:copy-dependencies package
clean 和 package 參數是構建階段,而 dependency:copy-dependencies 是一個目標。 clean 階段將會被首先執行,而後 dependency:copy-dependencies 目標會被執行,最終 package 階段被執行。code
2.clean生命週期
當咱們執行 mvn post-clean 命令時,Maven 調用 clean 生命週期,它包含如下階段。
pre-clean
clean
post-clean
Maven 的 clean 目標(clean:clean)綁定到了 clean 生命週期的 clean 階段。它的 clean:clean 目標經過刪除構建目錄刪除了構建輸出。因此當 mvn clean 命令執行時,Maven 刪除了構建目錄。
咱們能夠經過在上面的 clean 生命週期的任何階段定義目標來修改這部分的操做行爲。
3.default(or build)生命週期
這是 Maven 的主要生命週期,被用於構建應用。包括下面的 23 個階段。
生命週期階段 | 描述 |
---|---|
validate | 檢查工程配置是否正確,完成構建過程的全部必要信息是否可以獲取到。 |
initialize | 初始化構建狀態,例如設置屬性。 |
generate-sources | 生成編譯階段須要包含的任何源碼文件。 |
process-sources | 處理源代碼,例如,過濾任何值(filter any value)。 |
generate-resources | 生成工程包中須要包含的資源文件。 |
process-resources | 拷貝和處理資源文件到目的目錄中,爲打包階段作準備。 |
compile | 編譯工程源碼。 |
process-classes | 處理編譯生成的文件,例如 Java Class 字節碼的增強和優化。 |
generate-test-sources | 生成編譯階段須要包含的任何測試源代碼。 |
process-test-sources | 處理測試源代碼,例如,過濾任何值(filter any values)。 |
test-compile | 編譯測試源代碼到測試目的目錄。 |
process-test-classes | 處理測試代碼文件編譯後生成的文件。 |
test | 使用適當的單元測試框架(例如JUnit)運行測試。 |
prepare-package | 在真正打包以前,爲準備打包執行任何須要的操做。 |
package | 獲取編譯後的代碼,並按照可發佈的格式進行打包,例如 JAR、WAR 或者 EAR 文件。 |
pre-integration-test | 在集成測試執行以前,執行所需的操做。例如,設置所需的環境變量。 |
integration-test | 處理和部署必須的工程包到集成測試可以運行的環境中。 |
post-integration-test | 在集成測試被執行後執行必要的操做。例如,清理環境。 |
verify | 運行檢查操做來驗證工程包是有效的,並知足質量要求。 |
install | 安裝工程包到本地倉庫中,該倉庫能夠做爲本地其餘工程的依賴。 |
deploy | 拷貝最終的工程包到遠程倉庫中,以共享給其餘開發人員和工程。 |
當一個階段經過 Maven 命令調用時,例如 mvn compile,只有該階段以前以及包括該階段在內的全部階段會被執行。
不一樣的 maven 目標將根據打包的類型(JAR / WAR / EAR),被綁定到不一樣的 Maven 生命週期階段。
4.Site生命週期
Maven Site 插件通常用來建立新的報告文檔、部署站點等。
階段:
pre-site
site
post-site
site-deploy