Maven生命週期

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

Maven有三套相互獨立的生命週期,請注意這裏說的是“三套”,而且“相互獨立”,初學者容易將Maven的生命週期看成一個整體,其實不然。這三套生命週期分別是:

  • CleanLifecycle 在進行真正的構建之前進行一些清理工作。
  • DefaultLifecycle 構建的核心部分,編譯,測試,打包,部署等等。
  • SiteLifecycle 生成項目報告,站點,發佈站點。

maven三套聲明週期

再次強調一下它們是相互獨立的,可以僅僅調用clean來清理工作目錄,僅僅調用site來生成站點。當然也可以直接運行 “mvn clean install site” 運行所有這三套生命週期。

每套生命週期都由一組階段(Phase)組成,我們平時在命令行輸入的命令總會對應於一個特定的階段。maven中所有的執行動作(goal)都需要指明自己在這個過程中的執行位置,然後maven執行的時候,就依照過程的發展依次調用這些goal進行各種處理。這個也是maven的一個基本調度機制。

每套生命週期還可以細分成多個階段。

Clean生命週期

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

Clean生命週期
pre-clean
clean
post-clean

命令“mvn clean”中的就是代表執行上面的clean階段,在一個生命週期中,運行某個階段的時候,它之前的所有階段都會被運行,也就是說,“mvn clean” 等同於 “mvn pre-clean clean” ,如果我們運行“mvn post-clean” ,那麼 “pre-clean”,“clean” 都會被運行。這是Maven很重要的一個規則,可以大大簡化命令行的輸入。

Default生命週期

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

Default生命週期
compile
test
package
install
deploy

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

一般來說,位置稍後的過程都會依賴於之前的過程。這也就是爲什麼我們運行“mvn install” 的時候,代碼會被編譯,測試,打包。當然,maven同樣提供了配置文件,可以依照用戶要求,跳過某些階段。比如有時候希望跳過測試階段而直接install,因爲單元測試如果有任何一條沒通過,maven就會終止後續的工作。

Site生命週期

Site生命週期
pre-site
site

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章