關(guān)于Maven生命周期相關(guān)命令演示
Maven 是一個廣泛使用的項目管理工具,尤其在 Java 項目中。它通過定義一系列的生命周期階段(Phases)來管理項目的構(gòu)建過程。理解這些生命周期階段及其相關(guān)命令,對于高效地構(gòu)建和管理項目至關(guān)重要。
本文將通過實際演示,詳細(xì)介紹 Maven 的生命周期及其相關(guān)命令。
1. Maven 生命周期概述
Maven 的生命周期分為三個主要的生命周期:
Clean Lifecycle
:用于清理項目。Default Lifecycle
:用于構(gòu)建項目。Site Lifecycle
:用于生成項目站點文檔。
每個生命周期由一系列的階段(Phases)組成,每個階段代表了一個特定的構(gòu)建步驟。
1.1 Clean Lifecycle
Clean Lifecycle 包含以下幾個階段:
pre-clean
: 執(zhí)行一些清理前的準(zhǔn)備工作。clean
: 刪除之前構(gòu)建生成的所有文件。post-clean
: 執(zhí)行一些清理后的操作。
1.2 Default Lifecycle
Default Lifecycle 包含多個階段,以下是一些關(guān)鍵階段:
validate
: 驗證項目是否正確,所有必要信息是否可用。compile
: 編譯項目的源代碼。test
: 使用單元測試框架測試編譯后的源代碼。package
: 將編譯后的代碼打包成可分發(fā)的格式(如 JAR、WAR 等)。verify
: 對集成測試的結(jié)果進(jìn)行檢查,確保質(zhì)量標(biāo)準(zhǔn)。install
: 將包安裝到本地倉庫,供其他項目使用。deploy
: 將最終的包復(fù)制到遠(yuǎn)程倉庫,供其他開發(fā)人員和項目使用。
1.3 Site Lifecycle
Site Lifecycle 包含以下幾個階段:
pre-site
: 執(zhí)行一些生成站點前的準(zhǔn)備工作。site
: 生成項目的站點文檔。post-site
: 執(zhí)行一些生成站點后的操作。site-deploy
: 將生成的站點文檔部署到指定的服務(wù)器。
2. Maven 生命周期相關(guān)命令演示
接下來,我們將通過實際操作演示 Maven 生命周期中的關(guān)鍵命令。
2.1 Clean Lifecycle 相關(guān)命令
2.1.1 mvn clean
mvn clean
命令用于刪除之前構(gòu)建生成的所有文件。
mvn clean
- 執(zhí)行該命令后,Maven 會刪除
target
目錄下的所有文件和目錄。
未清理前:
執(zhí)行清理:
清理之后:
2.2 Default Lifecycle 相關(guān)命令
2.2.1 mvn validate
mvn validate
命令用于驗證項目是否正確,所有必要信息是否可用。
mvn validate
- 該命令通常在構(gòu)建過程的早期執(zhí)行,以確保項目的基本配置是正確的。
2.2.2 mvn compile
mvn compile
命令用于編譯項目的源代碼。
mvn compile
- 執(zhí)行該命令后,Maven 會將項目的源代碼編譯成字節(jié)碼,并生成相應(yīng)的類文件。
2.2.3 mvn test
mvn test
命令用于運行項目的單元測試。
mvn test
- 執(zhí)行該命令后,Maven 會運行項目中的所有單元測試,并生成測試報告。
test命令的作用是編譯并運行maven項目的src/test目錄下的junit測試代碼。注意:只能運行junit測試代碼。并且使用test運行的測試類的類名必須以Test結(jié)尾,否則不會運行,不會看到結(jié)果。
在test/java目錄下創(chuàng)建一個測試類,書寫測試方法,代碼如下:
import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; /** * Unit test for simple App. */ public class AppTest extends TestCase { /** * Create the test case * * @param testName name of the test case */ public AppTest( String testName ) { super( testName ); } /** * @return the suite of tests being tested */ public static Test suite() { return new TestSuite( AppTest.class ); } /** * Rigourous Test :-) */ public void testApp() { assertTrue( true ); } }
編譯后生成的文件:
運行日志:
注意:
- 1.test命令只能運行test目錄下的junit包下的類
- 2.test命令也可以運行多個測試方法:
import org.junit.Test; public class MavenTest { @Test public void show() { System.out.println("show............"); } @Test public void show1() { System.out.println("show1............"); } @Test public void show2() { System.out.println("show2............"); } }
2.2.4 mvn package
mvn package
命令用于將編譯后的代碼打包成可分發(fā)的格式(如 JAR、WAR 等)。
mvn package
- 執(zhí)行該命令后,Maven 會將編譯后的代碼打包成一個 JAR 或 WAR 文件,并存放在
target
目錄下。
注意:每次打包前還會再次執(zhí)行所有test命令。
2.2.5 mvn verify
mvn verify
命令用于對集成測試的結(jié)果進(jìn)行檢查,確保質(zhì)量標(biāo)準(zhǔn)。
mvn verify
- 該命令通常在
package
階段之后執(zhí)行,用于驗證打包后的代碼是否符合質(zhì)量標(biāo)準(zhǔn)。
2.2.6 mvn install
mvn install
命令用于將包安裝到本地倉庫,供其他項目使用。
mvn install
- 執(zhí)行該命令后,Maven 會將打包后的文件安裝到本地 Maven 倉庫中,供其他項目引用。
注意:每次安裝前還會再次執(zhí)行所有test命令。
2.2.7 mvn deploy
mvn deploy
命令用于將最終的包復(fù)制到遠(yuǎn)程倉庫,供其他開發(fā)人員和項目使用。
mvn deploy
- 執(zhí)行該命令后,Maven 會將打包后的文件部署到遠(yuǎn)程 Maven 倉庫中,供其他開發(fā)人員和項目引用。
2.3 Site Lifecycle 相關(guān)命令
2.3.1 mvn site
mvn site
命令用于生成項目的站點文檔。
mvn site
- 執(zhí)行該命令后,Maven 會生成項目的站點文檔,并存放在
target/site
目錄下。
2.3.2 mvn site-deploy
mvn site-deploy
命令用于將生成的站點文檔部署到指定的服務(wù)器。
mvn site-deploy
- 執(zhí)行該命令后,Maven 會將生成的站點文檔部署到指定的服務(wù)器上。
2.4 組合命令
Maven 允許將多個生命周期階段組合在一起執(zhí)行。例如:
2.4.1 mvn clean install
mvn clean install
命令用于先清理項目,然后安裝包到本地倉庫。
mvn clean install
- 執(zhí)行該命令后,Maven 會先刪除
target
目錄下的所有文件,然后編譯、測試、打包并安裝到本地倉庫。
2.4.2 mvn clean package
mvn clean package
命令用于先清理項目,然后打包代碼。
mvn clean package
- 執(zhí)行該命令后,Maven 會先刪除
target
目錄下的所有文件,然后編譯、測試并打包代碼。
3. 插件與生命周期
Maven 的生命周期階段是通過插件(Plugins)來實現(xiàn)的。每個階段都對應(yīng)一個或多個插件的目標(biāo)(Goals)。
例如,compile
階段通常由 maven-compiler-plugin
插件的 compile
目標(biāo)來執(zhí)行。
你可以通過配置 pom.xml
文件來定制插件的行為,例如指定編譯器的版本、源代碼的編碼等。
4. 總結(jié)
Maven 的生命周期是項目構(gòu)建的核心,理解并掌握這些生命周期階段及其相關(guān)命令,可以幫助你更高效地管理和構(gòu)建 Java 項目。通過組合不同的生命周期階段,你可以靈活地執(zhí)行各種構(gòu)建任務(wù),確保項目的質(zhì)量和可維護(hù)性。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Nebula?Graph介紹和SpringBoot環(huán)境連接和查詢操作
Nebula?Graph?是一款開源的、分布式的、易擴展的原生圖數(shù)據(jù)庫,能夠承載包含數(shù)千億個點和數(shù)萬億條邊的超大規(guī)模數(shù)據(jù)集,并且提供毫秒級查詢,這篇文章主要介紹了Nebula?Graph介紹和SpringBoot環(huán)境連接和查詢,需要的朋友可以參考下2022-10-10springMVC幾種頁面跳轉(zhuǎn)方式小結(jié)
本篇文章主要介紹了springMVC 幾種頁面跳轉(zhuǎn)方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02Springboot?整合maven插口調(diào)用maven?release?plugin實現(xiàn)一鍵打包功能
這篇文章主要介紹了Springboot?整合maven插口調(diào)用maven?release?plugin實現(xiàn)一鍵打包功能,整合maven-invoker使程序去執(zhí)行mvn命令,結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-03-03SpringCloud注冊中心之consul詳細(xì)講解使用方法
Consul是一款由HashiCorp公司開源的,用于服務(wù)治理的軟件,Spring Cloud Consul對其進(jìn)行了封裝,這篇文章主要介紹了springcloud組件consul服務(wù)治理,需要的朋友可以參考下2022-11-11SpringMVC中controller接收json數(shù)據(jù)的方法
這篇文章主要為大家詳細(xì)介紹了SpringMVC中controller接收json數(shù)據(jù)的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-09-09SpringCloud 搭建企業(yè)級開發(fā)框架之實現(xiàn)多租戶多平臺短信通知服務(wù)(微服務(wù)實戰(zhàn))
這篇文章主要介紹了SpringCloud 搭建企業(yè)級開發(fā)框架之實現(xiàn)多租戶多平臺短信通知服務(wù),系統(tǒng)可以支持多家云平臺提供的短信服務(wù)。這里以阿里云和騰訊云為例,集成短信通知服務(wù),需要的朋友可以參考下2021-11-11