關(guān)于Maven構(gòu)建命令使用詳解
1. Maven 構(gòu)建命令概述
Maven 是 Java 生態(tài)中最流行的構(gòu)建工具之一,它提供了一套標(biāo)準(zhǔn)化的構(gòu)建命令,使得開(kāi)發(fā)者可以輕松管理項(xiàng)目的編譯、測(cè)試、打包、安裝和部署等任務(wù)。
本篇文章將深入解析 Maven 中最常用的構(gòu)建命令,包括:
mvn cleanmvn compilemvn testmvn packagemvn installmvn deploy- 其他常見(jiàn)命令,如
mvn dependency:tree、mvn help:effective-pom等。
2. Maven 構(gòu)建命令詳解
2.1 mvn clean
作用:清除 target/ 目錄,刪除之前構(gòu)建的文件,確保下一次構(gòu)建的干凈環(huán)境。
mvn clean
執(zhí)行過(guò)程:
- 刪除
target/目錄 - 移除編譯生成的 class 文件、打包的 JAR 文件等
適用場(chǎng)景:
- 在重新構(gòu)建項(xiàng)目之前,避免舊的編譯文件影響新版本。
示例:
mvn clean package
效果:
- 先清理
target/目錄,再進(jìn)行打包。
2.2 mvn compile
作用:編譯 src/main/java 目錄下的源代碼,并生成 .class 文件到 target/classes/ 目錄。
mvn compile
執(zhí)行過(guò)程:
- 解析
pom.xml - 下載項(xiàng)目依賴(lài)(如果依賴(lài)不存在)
- 編譯
src/main/java目錄下的 Java 源代碼 - 生成
.class文件到target/classes/
適用場(chǎng)景:
- 當(dāng)需要僅編譯代碼而不執(zhí)行測(cè)試時(shí)。
示例:
mvn clean compile
效果:
- 先清理
target/目錄,然后編譯代碼。
2.3 mvn test
作用:編譯 src/test/java 目錄下的測(cè)試代碼,并運(yùn)行單元測(cè)試(JUnit、TestNG)。
mvn test
執(zhí)行過(guò)程:
- 先執(zhí)行
mvn compile - 編譯
src/test/java目錄下的測(cè)試代碼 - 運(yùn)行測(cè)試(JUnit 或 TestNG)
適用場(chǎng)景:
- 運(yùn)行項(xiàng)目中的單元測(cè)試,確保代碼邏輯正確。
示例:
mvn clean test
效果:
- 先清理
target/目錄,然后運(yùn)行所有測(cè)試。
2.4 mvn package
作用:將編譯后的代碼打包(如 JAR、WAR)到 target/ 目錄。
mvn package
執(zhí)行過(guò)程:
- 先執(zhí)行
mvn test - 打包
target/classes/下的文件為 JAR 或 WAR
適用場(chǎng)景:
- 當(dāng)需要生成可部署的 JAR/WAR 文件時(shí)。
示例:
mvn clean package
效果:
- 清理舊的
target/目錄,編譯代碼,運(yùn)行測(cè)試,最終打包 JAR/WAR。
2.5 mvn install
作用:將打包好的 JAR/WAR 文件安裝到 本地 Maven 倉(cāng)庫(kù)(~/.m2/repository/),供其他項(xiàng)目使用。
mvn install
執(zhí)行過(guò)程:
- 先執(zhí)行
mvn package - 將
target/目錄中的 JAR/WAR 文件復(fù)制到本地 Maven 倉(cāng)庫(kù)
適用場(chǎng)景:
- 當(dāng)開(kāi)發(fā)多個(gè)模塊(Module)時(shí),一個(gè)模塊可以安裝到本地倉(cāng)庫(kù),以便另一個(gè)模塊引用。
示例:
mvn clean install
效果:
- 清理舊的構(gòu)建,編譯代碼,運(yùn)行測(cè)試,打包,并安裝到本地倉(cāng)庫(kù)。
2.6 mvn deploy
作用:將構(gòu)建好的 JAR/WAR 部署到 遠(yuǎn)程 Maven 倉(cāng)庫(kù),如 Nexus、Artifactory。
mvn deploy
執(zhí)行過(guò)程:
- 先執(zhí)行
mvn install - 上傳
target/目錄中的 JAR/WAR 文件到遠(yuǎn)程 Maven 倉(cāng)庫(kù)
適用場(chǎng)景:
- 當(dāng)開(kāi)發(fā)的庫(kù)需要在團(tuán)隊(duì)內(nèi)部共享時(shí),可以部署到私有倉(cāng)庫(kù)(如 Nexus)。
示例:
mvn clean deploy
效果:
- 清理、編譯、測(cè)試、打包,并上傳到遠(yuǎn)程倉(cāng)庫(kù)。
3. 其他常用 Maven 命令
3.1 查看依賴(lài)樹(shù)
作用:列出所有項(xiàng)目依賴(lài),包括傳遞性依賴(lài),幫助分析依賴(lài)沖突。
mvn dependency:tree
示例:
mvn dependency:tree
輸出:
[INFO] com.example:my-app:jar:1.0-SNAPSHOT
[INFO] ├─ org.springframework:spring-core:jar:5.3.9:compile
[INFO] ├─ commons-logging:commons-logging:jar:1.2:compile
3.2 強(qiáng)制更新依賴(lài)
作用:強(qiáng)制更新所有依賴(lài),確保拉取最新版本。
mvn clean install -U
3.3 顯示 Maven 有效的 POM 配置
作用:查看合并后的 pom.xml,幫助調(diào)試依賴(lài)管理。
mvn help:effective-pom
3.4 跳過(guò)測(cè)試
作用:構(gòu)建時(shí)跳過(guò)單元測(cè)試,提高構(gòu)建速度。
mvn clean package -DskipTests
3.5 運(yùn)行單個(gè)測(cè)試
作用:只運(yùn)行指定的測(cè)試類(lèi),而不是運(yùn)行所有測(cè)試。
mvn test -Dtest=MyTestClass
3.6 運(yùn)行 Web 項(xiàng)目
作用:如果使用 tomcat7-maven-plugin,可以直接運(yùn)行 Web 項(xiàng)目。
mvn tomcat7:run
4. Maven 常用命令總結(jié)
| 命令 | 作用 |
|---|---|
| mvn clean | 刪除 target/ 目錄,清理構(gòu)建文件 |
| mvn compile | 編譯 src/main/java 目錄中的代碼 |
| mvn test | 運(yùn)行 src/test/java 目錄下的測(cè)試代碼 |
| mvn package | 生成 JAR/WAR 文件 |
| mvn install | 將 JAR/WAR 安裝到本地 Maven 倉(cāng)庫(kù) |
| mvn deploy | 將 JAR/WAR 部署到遠(yuǎn)程倉(cāng)庫(kù) |
| mvn dependency:tree | 查看項(xiàng)目的依賴(lài)樹(shù) |
| mvn clean install -U | 強(qiáng)制更新依賴(lài) |
| mvn help:effective-pom | 查看合并后的 POM 配置 |
| mvn clean package -DskipTests | 跳過(guò)測(cè)試打包 |
| mvn test -Dtest=MyTestClass | 只運(yùn)行指定的測(cè)試類(lèi) |
5. 總結(jié)
- Maven 提供了一套標(biāo)準(zhǔn)的構(gòu)建命令,涵蓋了 清理、編譯、測(cè)試、打包、安裝、部署 等功能。
- 通過(guò)
mvn clean install可以完成一次完整的構(gòu)建,并安裝到本地倉(cāng)庫(kù)。 - 通過(guò)
mvn deploy可以將構(gòu)建好的 JAR/WAR 部署到遠(yuǎn)程倉(cāng)庫(kù),供團(tuán)隊(duì)共享。 - 通過(guò)
mvn dependency:tree可以分析依賴(lài)關(guān)系,幫助解決依賴(lài)沖突。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java實(shí)現(xiàn)AES加密算法的簡(jiǎn)單示例分享
這篇文章主要介紹了Java實(shí)現(xiàn)AES加密算法的簡(jiǎn)單示例分享,AES算法是基于對(duì)密碼值的置換和替代,需要的朋友可以參考下2016-04-04
Maven配置文件settings.xml的實(shí)現(xiàn)
Maven是一個(gè)用于構(gòu)建和管理Java項(xiàng)目的強(qiáng)大工具,它依賴(lài)于設(shè)置文件來(lái)配置和管理其行為,其中最重要的之一便是settings.xml文件,本文主要介紹了Maven配置文件settings.xml的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01
Java RMI詳細(xì)介紹及簡(jiǎn)單實(shí)例
這篇文章主要介紹了Java RMI詳細(xì)介紹及簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-02-02
Java 實(shí)戰(zhàn)交易平臺(tái)項(xiàng)目之寵物在線商城系統(tǒng)
讀萬(wàn)卷書(shū)不如行萬(wàn)里路,只學(xué)書(shū)上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Java實(shí)現(xiàn)一個(gè)寵物在線商城系統(tǒng),大家可以在過(guò)程中查缺補(bǔ)漏,提升水平2021-11-11
Springboot 整合 Java DL4J 實(shí)現(xiàn)文物保護(hù)系統(tǒng)的詳細(xì)過(guò)程
在數(shù)字化時(shí)代,文物保護(hù)尤為關(guān)鍵,本文介紹如何利用SpringBoot和Deeplearning4j構(gòu)建一個(gè)圖像識(shí)別的文物保護(hù)系統(tǒng),系統(tǒng)采用卷積神經(jīng)網(wǎng)絡(luò)(CNN),能夠識(shí)別文物的損壞情況,本文介紹Springboot 整合 Java DL4J 實(shí)現(xiàn)文物保護(hù)系統(tǒng),感興趣的朋友一起看看吧2024-10-10
JAVA如何自動(dòng)下載SSL證書(shū)并導(dǎo)入到本地
這篇文章主要介紹了JAVA如何自動(dòng)下載SSL證書(shū)并導(dǎo)入到本地問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07

