08、maven生命週期詳解

來源:互聯網
上載者:User

Maven強大的一個重要的原因是它有一個十分完善的生命週期模型(lifecycle),這個生命週期可以從兩方面來理解,第一,顧名思義,運行Maven的每個步驟都由它來定義的,這種預定義的預設行為使得我們使用Maven變得簡單,相比而言,Ant的每個步驟都要你手工去定義。第二,這個模型是一種標準,在不同的項目中,使用Maven的介面是一樣的,這樣就不用去仔細理解每個項目的構建了,一般情況下,mvn clean install 這樣的命令是通用的。我想,一定是吸收了許多項目的經驗,Maven才能定義出如此完善的模型。

 

Maven有三套相互獨立的生命週期,請注意這裡說的是“三套”,而且“相互獨立”,初學者容易將Maven的生命週期看成一個整體,其實不然。這三套生命週期分別是: Clean Lifecycle 在進行真正的構建之前進行一些清理工作。
Default Lifecycle 構建的核心部分,編譯,測試,打包,部署等等。
Site Lifecycle 產生項目報告,網站,發布網站。

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

 

知道了每套生命週期的大概用途和相互關係以後,來逐個詳細看一下每套生命週期,Clean和Site相對比較簡單,先解釋一下。

 

每套生命週期都由一組階段(Phase)組成,我們平時在命令列輸入的命令總會對應於一個特定的階段。比如,運行mvn clean ,這個的clean是Clean生命週期的一個階段。有點繞。要知道有Clean生命週期,也有clean階段。Clean生命週期一共包含了三個階段: pre-clean  執行一些需要在clean之前完成的工作 clean  移除所有上一次構建產生的檔案 post-clean  執行一些需要在clean之後立刻完成的工作

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

 

下面看一下Site生命週期的各個階段: pre-site     執行一些需要在產生網站文檔之前完成的工作 site    產生項目的網站文檔 post-site     執行一些需要在產生網站文檔之後完成的工作,並且為部署做準備 site-deploy     將產生的網站文檔部署到特定的伺服器上

這裡經常用到的是site階段和site-deploy階段,用以產生和發布Maven網站,這可是Maven相當強大的功能,Manager比較喜歡,文檔及統計資料自動產生,很好看。

 

最後,來看一下Maven的最重要的Default生命週期,絕大部分工作都發生在這個生命週期中,這裡,我只解釋一些比較重要和常用的階段: validate generate-sources process-sources generate-resources process-resources     複製並處理資源檔,至目標目錄,準備打包。 compile     編譯項目的原始碼。 process-classes generate-test-sources  process-test-sources 
generate-test-resources process-test-resources     複製並處理資源檔,至目標測試目錄。 test-compile     編譯測試原始碼。 process-test-classes test     使用合適的單元測試架構運行測試。這些測試代碼不會被打包或部署。 prepare-package package     接受編譯好的代碼,打包成可發布的格式,如 JAR 。 pre-integration-test integration-test post-integration-test verify install     將包安裝至本地倉庫,以讓其它項目依賴。 deploy     將最終的包複製到遠端倉庫,以讓其它開發人員與項目共用。

基本上,根據名稱我們就能猜出每個階段的用途,關於其它階段的解釋,請參考http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

 

記住,運行任何一個階段的時候,它前面的所有階段都會被運行,這也就是為什麼我們運行mvn install 的時候,代碼會被編譯,測試,打包。

 

此外,Maven的外掛程式機制是完全依賴Maven的生命週期的,因此理解生命週期至關重要,在之後的文章裡,我將會進一步解釋Maven的外掛程式機制。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.