生命周期的定義
Maven的生命周期(lifecycle
)是對構建過程進行的抽象。
它包含了項目的清理、初始化、編譯、測試、打包、集成測試、驗證、部署和站點生成等幾乎所有的構建步驟。
它將項目整體划分為一個個階段,按順序依次執行,也可以指定執行到某個階段,然后結束。
因為Maven的生命周期是抽象的,因此它不做任何的實際工作,全部由插件(plugin
)完成。
生命周期的分類
Maven的默認插件
三個構建生命周期
Maven 的內部有三個標准生命周期,分別是 : clean, default, site
標准生命周期 | 作用 |
---|---|
clean |
項目清理 |
default(build) |
項目部署 |
site |
項目站點文檔創建 |
生命周期與階段
Maven將生命周期(lifecycle)
划分為一個個的階段 (phase)
一系列順序執行的階段 (phase)
,構成一個完整的生命周期(lifecycle)
。
比如執行mvn clean
命令,該命令包含以下階段:
pre-clean:執行一些需要在clean之前完成的工作
clean:移除所有上一次構建生成的文件
post-clean:執行一些需要在clean之后立刻完成的工作
這三個階段按順序全部執行完成后,才算完成了clean生命周期。
對於程序員來說,不用這么內卷,這個東西知道與否,對於程序開發完全沒有影響
比如我,當我寫完這篇博客,我就忘了maven的階段是什么了。
clean生命周期
clean生命周期通過clean插件(自帶)完成,功能是刪除當前項目的target目錄(可自行嘗試)
site生命周期
site生命周期:程序員可以使用 Maven 提供的 maven-site-plugin
插件(該插件不是默認插件,需要引用
)讓 Maven 生成一個 Web 站點, 以站點的形式發布信息。
pom.xml中添加以下內容
<build>
<plugins>
<!--添加 maven-site-plugin 插件-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.7.1</version>
</plugin>
</plugins>
</build>
運行命令 mvn site
,界面如下:
可以看到,在target
文件夾下,生成了一個site
文件夾,這就是站點對應的文檔信息。
打開site文件夾,點擊網頁,可以看到以下界面
都是一些依賴關系,文檔描述的信息,和程序開發的關系不大。
default(build)生命周期
clean生命周期,只有一個階段,點擊clean插件即可完成。
site生命周期,和程序開發的關系並不大,作為一個程序員,我平時幾乎用不到該生命周期。
三大生命周期中,和程序員關系最密切的 是 default(build)生命周期
default(build)生命周期
和程序開發息息相關,我認為還是有了解的必要。
default(build)生命周期各階段詳解
核心階段 | 詳解 |
---|---|
validate | 驗證項目是否正確,所有必要信息是否可用(很少單獨使用) |
compile | 編譯項目的源代碼(將src/main中的java代碼編譯成class文件,輸出到targe目錄下) |
test | 將單元測試的資源文件和代碼進行編譯,生成的文件位於target/test-classes (打包部署請跳過該階段) |
package | 把class文件,resources文件打包成jar包(也可以是war包),生成的jar包位於target目錄下 |
verify | 檢查包是否有效(很少單獨使用) |
install | 將jar部署到本地倉庫,本地的其他模塊依賴該jar包時,可以直接從本地倉庫去獲取 |
deploy | 將jar包部署到遠端倉庫,需要在maven的setting.xml中配置私服的用戶名和密碼,以及在pom.xml配置 |
<distributionManagement>
<repository>
<id>releases</id>
<name>Internal Releases</name>
<url>http://localhost:8081/nexus/content/repository/myparty</url>
</repository>
<snapshotRepository>
<id>releases</id>
<name>Internal Releases</name>
<url>http://localhost:8081/nexus/content/repository/myparty</url>
</snapshotRepository>
</distributionManagement>
不同於 clean生命周期和site生命周期都是單獨的一個階段,default(build)生命周期里面分為七個大階段。
這七個大階段是 順序執行 的
指定某個生命周期的階段
比如執行 mvn install
,會依次執行validate, compile, test, package, verify,最后執行 install 階段,將jar包發布到本地倉庫。
指定多個不同生命周期的階段
執行 mvn clean deploy
命令,首先完成的 clean 生命周期,將以前構建的文件清理。
然后再執行 default lifecycle 的 validate, compile, test, package, verify, insstall, deploy 階段,將 package 階段創建的jar包發布到遠程倉庫中。