Maven 構建生命週期

Maven 構建生命週期定義了一個項目構建跟發佈的過程。咱們在開發項目的時候,不斷地在編譯、測試、打包、部署等過程,maven的生命週期就是對全部構建過程抽象與統一,生命週期包含項目的清理、初始化、編譯、測試、打包、集成測試、驗證、部署、站點生成等幾乎全部的過程。bash

Maven 有如下三個標準的生命週期:

  • clean:項目清理的處理
  • default(或 build):項目部署的處理
  • site:項目站點文檔建立的處理

構建階段由插件目標構成

一個插件目標表明一個特定的任務(比構建階段更爲精細),這有助於項目的構建和管理。這些目標可能被綁定到多個階段或者無綁定。不綁定到任何構建階段的目標能夠在構建生命週期以外經過直接調用執行。這些目標的執行順序取決於調用目標和構建階段的順序。服務器

例以下面的命令:框架

cleanpakage 是構建階段,dependency:copy-dependencies 是目標maven

mvn clean dependency:copy-dependencies package
複製代碼

這裏的 clean 階段將會被首先執行,而後 dependency:copy-dependencies 目標會被執行,最終 package 階段被執行。post


Clean 生命週期

CleanLifecycle
當咱們執行 mvn post-clean 命令時,Maven 調用 clean 生命週期,它包含如下階段:

  • pre-clean:執行一些須要在clean以前完成的工做
  • clean:移除全部上一次構建生成的文件
  • post-clean:執行一些須要在clean以後馬上完成的工做

mvn clean 中的 clean 就是上面的 clean,在一個生命週期中,運行某個階段的時候,它以前的全部階段都會被運行,也就是說,mvn clean 等同於mvn pre-clean clean ,若是咱們運行mvn post-clean ,那麼 pre-cleanclean 都會被運行。單元測試

Default (Build) 生命週期

DefaultLifecycle
這是 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 生命週期相關的重要概念須要說明: 當一個階段經過 Maven 命令調用時,例如 mvn compile,只有該階段以前以及包括該階段在內的全部階段會被執行。 不一樣的 maven 目標將根據打包的類型(JAR / WAR / EAR),被綁定到不一樣的 Maven 生命週期階段。測試

Site 生命週期

SiteLifecycle
Maven Site 插件通常用來建立新的報告文檔、部署站點等。

生命週期階段 描述
pre-site 執行一些須要在生成站點文檔以前完成的工做
site 生成項目的站點文檔
post-site 執行一些須要在生成站點文檔以後完成的工做,而且爲部署作準備
site-deploy 將生成的站點文檔部署到特定的服務器上

這裏常常用到的是site階段和site-deploy階段,用以生成和發佈Maven站點,這但是Maven至關強大的功能。優化

相關文章
相關標籤/搜索