Maven學習 04 - 構建生命週期
阿新 • • 發佈:2018-11-29
文章目錄
構建生命週期是指為一個工程進行專案構建和釋出的過程,它是 Maven 中的一個核心概念。
1、標準生命週期
Maven中內建了三個標準的構建生命週期:
- default(或build):處理工程的部署
- clean:處理工程的清理
- site:負責建立工程的站點文件。
這三個構建生命週期都是由一系列不同的構建階段組成,每一個構建階段代表了生命週期的一個階段。
2、default 生命週期的階段
一個典型的 Maven default(build)生命週期主要由以下幾個階段的序列組成(此處並完全列出):
階段 | 描述 |
---|---|
驗證 validate | 驗證專案是否正確且所有必須資訊是可用的 |
編譯 compile | 原始碼編譯在此階段完成 |
測試 Test | 使用適當的單元測試框架(例如JUnit)執行測試。 |
包裝 package | 建立JAR/WAR包如在 pom.xml 中定義提及的包 |
檢查 verify | 對整合測試的結果進行檢查,以保證質量達標 |
安裝 install | 安裝打包的專案到本地倉庫,以供其他專案使用 |
部署 deploy | 拷貝最終的工程包到遠端倉庫中,以共享給其他開發人員和工程 |
使用預設的生命週期時,Maven將首先驗證專案,然後將編譯原始碼,執行單元測試,再打包二進位制檔案(例如:jar),然後再對包檔案進行整合測試(如果需要的話),再校驗包檔案,並將已經校驗的包檔案安裝到本地倉庫,然後在指定的環境中部署包。
3、生命週期階段的執行順序
-
各生命週期的階段會被順序地執行(包括那些這裡沒有展示的其他生命週期階段)。
-
而且在呼叫一個生命週期階段時,maven 不僅執行指定的構建階段,也會執行指定構建階段之前的每一個階段
比如,在預設生命週期中,只需要呼叫最後一個deploy
生命階段,即可執行前面所有階段:
mvn deploy // 會先執行前面的所有階段
mvn install // 會先執行前面的 validate ... verify 等階段
-
同樣的命令可以用在多模組的情況下(即包含一個或多個子專案的工程):
mvn clean install // 會遍歷所有的子專案,並且執行clean命令,然後執行install命令(包含所有之前步驟的命令)
-
構建命令中也可以加入外掛目標
-
一個外掛目標代表一個特定的任務(比構建階段更為精細)。這些目標的執行順序取決於呼叫目標和構建階段的順序。例如下面的命令:
mvn clean dependency:copy-dependencies package // 其中clean 和 pakage 是構建階段,dependency:copy-dependencies 是目標。 // 執行順序是` clean 階段 -> dependency:copy-dependencies 目標 -> package 階段 `
-
4、Clean 生命週期
clean 階段用於清除上一次編譯之後在target包下生成的位元組碼檔案。
階段 | 描述 |
---|---|
pre-clean | 執行一些清理前需要完成的工作 |
clean | 清理上一次構建生成的檔案 |
post-clean | 執行一些清理後需要完成的工作 |
5、Site生命週期
階段 | 描述 |
---|---|
pre-site | 執行一些在生成站點之前需要完成的工作 |
site | 生成專案的站點文件 |
post-site | 執行一些在生成站點之後需要完成的工作 |
site-deploy | 將生成的站點檔案釋出到遠端伺服器上 |