一篇文章帶你了解Maven的生命周期


生命周期的定義

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包發布到遠程倉庫中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM