Maven之(二)Maven生命週期

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

Maven有三套相互獨立的生命週期,請注意這裏說的是「三套」,並且「相互獨立」,初學者容易將Maven的生命週期當作一個總體,其實否則。這三套生命週期分別是:併發

•    CleanLifecycle 在進行真正的構建以前進行一些清理工做。框架

•    DefaultLifecycle 構建的核心部分,編譯,測試,打包,部署等等。maven

•    SiteLifecycle 生成項目報告,站點,發佈站點。post


再次強調一下它們是相互獨立的,能夠僅僅調用clean來清理工做目錄,僅僅調用site來生成站點。固然也能夠直接運行 「mvn clean install site」 運行全部這三套生命週期。單元測試

每套生命週期都由一組階段(Phase)組成,咱們平時在命令行輸入的命令總會對應於一個特定的階段。maven中全部的執行動做(goal)都須要指明本身在這個過程當中的執行位置,而後maven執行的時候,就依照過程的發展依次調用這些goal進行各類處理。這個也是maven的一個基本調度機制。測試

每套生命週期還能夠細分紅多個階段。spa


Clean生命週期

Clean生命週期一共包含了三個階段:命令行

Clean生命週期code

pre-clean

執行一些須要在clean以前完成的工做

clean

移除全部上一次構建生成的文件

post-clean

執行一些須要在clean以後馬上完成的工做

命令「mvn clean」中的就是表明執行上面的clean階段,在一個生命週期中,運行某個階段的時候,它以前的全部階段都會被運行,也就是說,「mvn clean」 等同於 「mvn pre-clean clean」 ,若是咱們運行「mvn post-clean」 ,那麼 「pre-clean」,「clean」 都會被運行。這是Maven很重要的一個規則,能夠大大簡化命令行的輸入。



Default生命週期

Maven最重要就是的Default生命週期,也稱構建生命週期,絕大部分工做都發生在這個生命週期中,每一個階段的名稱與功能以下::

Default生命週期

validate

驗證項目是否正確,以及全部爲了完整構建必要的信息是否可用

generate-sources

生成全部須要包含在編譯過程當中的源代碼

process-sources

處理源代碼,好比過濾一些值

generate-resources

生成全部須要包含在打包過程當中的資源文件

process-resources

複製並處理資源文件至目標目錄,準備打包

compile

編譯項目的源代碼

process-classes

後處理編譯生成的文件,例如對Java類進行字節碼加強(bytecode enhancement)

generate-test-sources

生成全部包含在測試編譯過程當中的測試源碼

process-test-sources

處理測試源碼,好比過濾一些值

generate-test-resources

生成測試須要的資源文件

process-test-resources

複製並處理測試資源文件至測試目標目錄

test-compile

編譯測試源碼至測試目標目錄

test

使用合適的單元測試框架運行測試。這些測試應

該不須要代碼被打包或發佈

prepare-package

在真正的打包以前,執行一些準備打包必要的操

package

將編譯好的代碼打包成可分發的格式,如

JAR,WAR,或者EAR

pre-integration-test

執行一些在集成測試運行以前須要的動做。如建

立集成測試須要的環境

integration-test

若是有必要的話,處理包併發布至集成測試能夠

運行的環境

post-integration-test

執行一些在集成測試運行以後須要的動做。如清

理集成測試環境。

verify

執行全部檢查,驗證包是有效的,符合質量規範

install

安裝包至本地倉庫,以備本地的其它項目做爲依

賴使用

deploy

複製最終的包至遠程倉庫,共享給其它開發人員

和項目(一般和一次正式的發佈相關)

可見,構建生命週期被細分紅了22個階段,可是咱們不必對每一個階段都瞭如指掌,常常關聯使用的只有process-test-resources、test、package、install、deploy等幾個階段而已。

通常來講,位置稍後的過程都會依賴於以前的過程。這也就是爲何咱們運行「mvn install」 的時候,代碼會被編譯,測試,打包。固然,maven一樣提供了配置文件,能夠依照用戶要求,跳過某些階段。好比有時候但願跳過測試階段而直接install,由於單元測試若是有任何一條沒經過,maven就會終止後續的工做。


Site生命週期

Site生命週期

pre-site

執行一些須要在生成站點文檔以前完成的工做

site

生成項目的站點文檔

post-site

執行一些須要在生成站點文檔以後完成的工做,而且爲部署作準備

site-deploy

將生成的站點文檔部署到特定的服務器上

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

相關文章
相關標籤/搜索