除了坐標(biāo)、依賴以及倉庫之外,Maven的另外兩個(gè)核心概念是生命周期和插件。在有關(guān)Maven的日常使用中,命令行的輸入往往就對應(yīng)了生命周期,如mvn package就表示執(zhí)行默認(rèn)生命周期階段package。Maven的生命周期是抽象的,其實(shí)際行為都由插件來完成,如package階段的任務(wù)可能就會由maven-jar-plugin完成。生命周期和插件兩者協(xié)同工作,密不可分。

 

1.Maven生命周期

 

我們在開發(fā)項(xiàng)目的時(shí)候,我們不斷地在經(jīng)歷編譯、測試、打包、部署等過程,maven的生命周期就是對所有這些過程的一個(gè)抽象與統(tǒng)一,她的生命周期包含項(xiàng)目的清理、初始化、編譯、測試、打包、集成測試、驗(yàn)證、部署、站點(diǎn)生成等幾乎所有的過程,而且maven的生命周期是及其靈活,她生命周期的每個(gè)階段是通過插件來實(shí)現(xiàn)的,maven也內(nèi)置了很多插件,所以我們在項(xiàng)目進(jìn)行編譯、測試、打包的過程是沒有感覺到。像編譯是通過maven-compile-plugin實(shí)現(xiàn)的、測試是通過maven-surefire-plugin實(shí)現(xiàn)的。

 

Maven有三套相互獨(dú)立的生命周期,請注意這里說的是“三套”,而且“相互獨(dú)立”,初學(xué)者容易將Maven的生命周期看成一個(gè)整體,其實(shí)不然。這三套生命周期分別是:

  • Clean Lifecycle  在進(jìn)行真正的構(gòu)建之前進(jìn)行一些清理工作。

  • Default Lifecycle  構(gòu)建的核心部分,編譯,測試,打包,部署等等。

  • Site Lifecycle  生成項(xiàng)目報(bào)告,站點(diǎn),發(fā)布站點(diǎn)。

我再次強(qiáng)調(diào)一下它們是相互獨(dú)立的,你可以僅僅調(diào)用clean來清理工作目錄,僅僅調(diào)用site來生成站點(diǎn)。當(dāng)然你也可以直接運(yùn)行 mvn clean install site運(yùn)行所有這三套生命周期。

 

知道了每套生命周期的大概用途和相互關(guān)系以后,來逐個(gè)詳細(xì)看一下每套生命周期,CleanSite相對比較簡單,先解釋一下:

每套生命周期都由一組階段(Phase)組成,我們平時(shí)在命令行輸入的命令總會對應(yīng)于一個(gè)特定的階段。比如,運(yùn)行mvn clean,這個(gè)的cleanClean生命周期的一個(gè)階段。有點(diǎn)繞?要知道有Clean生命周期,也有clean階段。

Clean生命周期一共包含了三個(gè)階段: