天天看點

03.maven生命周期

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--&gt;clean--&gt;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