6.生命週期概述

生命週期

1、什麼是 生命週期?

  Maven 強大的原因是有一個十分完善的生命週期,生命週期可以理解爲項目構建步驟的集合,它定義了各個構建環節的執行順序,有了這個順序,Maven 就可以自動化的執行構建命令。

  Maven 的核心程序中定義了抽象的生命週期,生命週期中各個階段的具體任務是由插件來完成的。有三套相互獨立的生命週期,各個構建環節執行順序不能打亂,必須按照既定的正確順序來執行。

    ①、Clean Lifecycle:在進行真正的構建之前進行一些清理工作

    ②、Default Lifecycle:構建的核心部分,編譯、測試、打包、安裝、部署等等。

    ③、Site Lifecycle:生成項目報告,站點,發佈站點。 

這三個都是相互獨立的。你可以僅僅調用 clean 來清理工作目錄,僅僅調用 site 來生成站點。當然,也可以直接運行 mvn claen install site 運行所有這三套生命週期。下面我們分別來談談這三個生命週期。

 

生命週期三階段

1.清理階段

項目運行之前的清理工作。

Clean Lifecycle:在進行真正的構建之前進行一些清理工作

 

1

2

3

pre-clean 執行一些需要在clean之前完成的工作

clean 移除所有上一次構建生成的文件

post-clean 執行一些需要在clean之後立刻完成的工作

  我們前面講的執行命令 mvn -clean,也就等同於 Clean 生命週期中的第一個階段 mvn pre-clean clean。注意有 Clean 聲明週期,而這個聲明週期中又有 clean 階段。

  只要執行後面的命令,那麼前面的命令都會執行,不需要再重新去輸入命令。

 

2.核心階段

包含項目的編譯、測試、打包、運行、發佈等功能

Default Lifecycle:構建的核心部分,編譯、測試、打包、安裝、部署等等

 

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 將最終的包複製到遠程的倉庫,以讓其它開發人員與項目共享。

  這裏我們強調一下:maven中,只要在同一個生命週期,你執行後面的階段,那麼前面的階段也會被執行,而且不需要額外去輸入前面的階段。

  我們舉個例子:執行 mven compile 命令,根據上面的聲明週期,它會默認執行前面五個個步驟也就是   

 

1

2

3

4

5

6

validate

generate-sources

process-sources

generate-resources

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

compile 編譯項目的源代碼。

我們在 eclipse 中執行 mvn compile 命令

https://images2017.cnblogs.com/blog/1120165/201708/1120165-20170831083125187-1048796512.png

  看到紅色框的兩部分,第一個 maven-compiler-plugin:2.6:resource 就是用來執行前面幾個步驟的插件,第二個插件 maven-compiler-plugin:3.1:compile 則是用來執行 mvn compile 的插件。這裏我們提一下,mvn 的各個生命週期步驟都是依賴插件來完成的,後面我們會詳細講解 maven 插件。

 

3.發佈站點

生成站點

Site Lifecycle:生成項目報告,站點,發佈站點。

 

1

2

3

4

pre-site 執行一些需要在生成站點文檔之前完成的工作

site 生成項目的站點文檔

post-site 執行一些需要在生成站點文檔之後完成的工作,並且爲部署做準備

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

 

  這裏經常用到的是 site 階段和 site-deploy 階段,用來生成和發佈 maven 站點,這是 Maven 比較強大的功能,文檔及統計數據自動生成。由於現在的系統會有專門工具來生成文檔或報表。所以這個功能也是比較雞肋吧,不夠簡潔和美觀,用的不太多。