Maven 是 Java 項目構建和依賴管理的得力助手。這里為你總結了一些常用指令,希望能幫你提升開發效率。
下面這個表格匯總了 Maven 最核心和常用的一些命令:
命令 | 主要功能 | 典型使用場景 |
---|---|---|
mvn clean | 清理項目,刪除?target ?目錄及其所有編譯輸出文件。 | 確保全新的構建環境,避免舊文件干擾。 |
mvn compile | 編譯項目的源代碼(src/main/java ?下的?.java ?文件)。 | 快速檢查源代碼是否存在編譯錯誤。 |
mvn test | ??編譯??測試代碼和源代碼,并??運行??所有單元測試(使用 JUnit 或 TestNG)。 | 驗證代碼功能是否正確,是保證質量的重要環節。 |
mvn package | 將編譯后的代碼??打包??為可分發的格式(如 JAR、WAR)。 | 生成可用于部署或發布的構件。 |
mvn install | 將打包好的構件??安裝到本地 Maven 倉庫??(默認在?~/.m2/repository )。 | 供本地其他項目引用,多模塊項目開發時非常常用。 |
mvn deploy | 將構件??部署到遠程 Maven 倉庫??(需要配置)。 | 發布構件,以便團隊其他成員或整個公司可以使用。 |
mvn dependency:tree | ??顯示項目的依賴樹??,展示所有直接依賴和傳遞依賴。 | 分析依賴關系,排查依賴沖突的利器。 |
mvn archetype:generate | ??根據原型(模板)創建新項目??。 | 快速搭建項目骨架。 |
mvn help:effective-settings # 查看生效的 settings 配置
mvn help:effective-pom ? ? ?# 查看生效的 POM 配置(合并了所有父POM)
mvn dependency:resolve ? ? # 解析并顯示依賴的實際獲取位置
🧩 ??理解 Maven 生命周期??
Maven 命令與??生命周期??的概念緊密相關。Maven 有三套相互獨立的生命周期:clean
(清理)、default
(默認,又稱構建生命周期)、site
(站點文檔)
。每個生命周期包含多個??階段??。
當你執行某個生命周期階段時,Maven ??會自動執行該生命周期中所有之前的階段??。例如:
- ?執行?
mvn package
(default
?生命周期的一個階段)時,Maven 會先執行?compile
,?test
?等所有位于?package
?之前的階段。 - ?執行?
mvn install
?會自動觸發?clean
?之前的生命周期階段(如?compile
,?test
,?package
)。
🔧 ??常用參數與技巧??
- ???跳過測試??:
- ?
-DskipTests
: ??跳過測試的運行??,但會編譯測試代碼。 - ?
-Dmaven.test.skip=true
: ??同時跳過測試代碼的編譯和運行??。效率更高,但完全不處理測試。
- ?
- ???強制更新快照依賴 (
-U
)??:強制檢查并更新遠程倉庫中的??快照(SNAPSHOT)版本依賴??(默認每天只更新一次)。常用于確保使用依賴的最新快照。 - ???指定配置文件 (
-P
)??: 激活在?pom.xml
?或?settings.xml
?中定義的特定 ??profile??(配置剖面),常用于區分不同環境(如開發、測試、生產)。例如:mvn clean install -Pprod
。 - ???離線模式 (
-o
)??:在??離線模式??下運行 Maven,僅使用本地倉庫中已有的依賴,不聯網檢查更新。 - ???顯示調試信息 (
-X
)??: 輸出 Maven 運行的??詳細調試信息??,用于排查問題。
💡 ??高效命令組合??
- ?
mvn clean install
: ??最常用的組合之一??。先清理舊構建,再執行完整編譯、測試、打包并安裝到本地倉庫。 - ?
mvn clean package
: 清理后打包,常用于生成最終部署包。 - ?
mvn clean install -DskipTests
: 快速安裝,跳過測試以節省時間(請確保代碼質量)。 - ?
mvn clean install -U
: 清理安裝并強制更新快照依賴。
📖 ??了解更多??
- ?想深入了解 Maven 的??依賴管理??(如排除依賴、解決沖突),可以多研究?
pom.xml
?中的?<dependencies>
?和?<dependencyManagement>
?配置。 - ?探索各種 Maven 插件(如 Spring Boot、Docker 等相關的插件)可以讓你更強大地自定義構建過程。
希望這份總結能幫助你更高效地使用 Maven。多練習,這些命令就會變得得心應手。
mvn -X dependency:resolve
mvn -e -X clean package
mvn -X dependency:resolve | grep -i "spring-core"
mvn -X dependency:resolve| Select-String "spring-core"?
檢查是否有其他依賴引入舊版本
mvn dependency:tree -Dincludes=*jsqlparser*
1. 首先修復父 POM 中的重復模塊定義2. 然后在項目根目錄執行:mvn clean install -DskipTests
3. 最后在子模塊目錄執行:mvn clean compile
# 清理本地緩存
mvn clean install -U# 或者強制更新所有依賴
mvn clean compile -U -Dmaven.main.skip=truemvn dependency:tree | grep jsqlparser
# 快速構建(跳過測試和代碼檢查)
mvn clean install -DskipTests -Dcheckstyle.skip=true -Dspotbugs.skip=true# 僅清理和編譯
mvn clean compile# 構建并運行測試(不打包)
mvn clean test# 重新下載所有依賴
mvn clean compile -U# 查看項目信息
mvn help:effective-pom# 查看項目描述
mvn help:describe# 查看插件信息
mvn help:describe -Dplugin=org.apache.maven.plugins:maven-compiler-plugin# 生成項目站點
mvn site
# 查看依賴樹
mvn dependency:tree# 分析依賴沖突
mvn dependency:analyze# 下載所有依賴源碼
mvn dependency:sources# 下載依賴的javadoc
mvn dependency:resolve -Dclassifier=javadoc# 復制依賴到指定目錄
mvn dependency:copy-dependencies
# 清理并重新構建項目
mvn clean install# 跳過測試構建
mvn clean install -DskipTests# 僅編譯項目
mvn compile# 運行測試
mvn test# 打包項目
mvn package# 安裝到本地倉庫
mvn install# 部署到遠程倉庫
mvn deployE:\仿真\osp-cloud-java-1.2.0-xn-release\xn-modules\xn-system>mvn dependency:tree -Dincludes=*jsqlparser*
[INFO] Scanning for projects...
[INFO]
[INFO] -----------------------< com.cnpc.xn:xn-system >------------------------
[INFO] Building xn-system 1.2.100-xn-release
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ xn-system ---
[INFO] com.cnpc.xn:xn-system:jar:1.2.100-xn-release
[INFO] \- cnpc.udp.dfw:udp-mybatis-plus-starter:jar:1.3.1:compile
[INFO] ? ?\- com.baomidou:mybatis-plus-jsqlparser:jar:3.5.10.1:compile
[INFO] ? ? ? \- com.github.jsqlparser:jsqlparser:jar:5.1:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: ?1.803 s
[INFO] Finished at: 2025-09-03T09:26:30+08:00
[INFO] ------------------------------------------------------------------------