生命週期階段
mvn validate驗證專案結構:下載 metadata、解析 `pom.xml`、健全性檢查依賴。
-N 只處理根反應器(不處理子模組);-f <pom> 使用其他 POM;-P<profile> 啟用 profile
mvn validatemvn compile把專案主要的 `src/main/java` 編譯為 `target/classes`。使用設定的 JDK 與 `maven-compiler-plugin`。
-DskipTests;-T 4 平行建置執行緒;-q 安靜
mvn compilemvn test對編譯後的主要與測試源碼執行單元測試(Surefire)。會跳過 `failsafe`(整合測試)——整合測試請用 `mvn verify`。
-Dtest=ClassName;-Dtest=Class#method;-DfailIfNoTests=false;-Dsurefire.useFile=false
mvn test -Dtest=UserServiceTestmvn package執行所有前置階段,然後把編譯結果打包成 JAR/WAR/EAR,置於 `target/` 下。
-DskipTests;-Dpackaging=jar
mvn package -DskipTestsmvn verify執行 package 並加上整合測試(Failsafe),然後驗證一切就緒可發佈。**不會**執行 install 或 deploy。
-DskipITs;-DskipTests
mvn verify -DskipITsmvn install執行 verify,然後把產生的構件複製到本地 Maven 儲存庫(`~/.m2/repository`),讓其他本地專案可以依賴它。
mvn install -DskipTestsmvn deploy建置並把構件推送到 `pom.xml` 中 `<distributionManagement>` 宣告的遠端儲存庫(Nexus/Artifactory/經 Sonatype 推到 Maven Central)。
-DskipTests;-P release 使用 release profile
mvn deploy -P release -DskipTestsmvn clean刪除 `target/` 目錄,從乾淨狀態重新開始。
mvn cleanmvn clean install先清空 `target/`,再一路執行到 `install`。最常見的「從頭重建」指令。
-U 強制更新 snapshot 依賴
mvn clean install -U依賴
mvn dependency:tree印出已解析的依賴樹(含衝突解決)——排查版本錯位造成的 `NoSuchMethodError` 必備。
-Dincludes=<groupId>[:<artifactId>[:<version>]];-Dverbose
mvn dependency:tree -Dincludes=com.fasterxml.jackson.coremvn dependency:resolve把所有依賴解析到本地儲存庫,而不執行生命週期。
mvn dependency:resolvemvn dependency:analyze比對宣告的 `<dependencies>` 與實際 `import`/`package` 使用情況;標記未使用/未宣告的依賴。
mvn dependency:analyzemvn dependency:list把建置中每個已解析依賴列為單純的 `groupId:artifactId:type:version` 行。
mvn dependency:list | grep slf4jmvn versions:display-dependency-updates列出所有在已設定儲存庫中有更新版本可用的依賴。
mvn versions:display-dependency-updates多模組
mvn -pl <module> <goal>對一個或多個特定子模組執行目標(依 artifact ID,逗號分隔)。
-am 同時建置目標所依賴的模組
mvn -pl user-service,order-service -am testmvn -pl <module> -am <goal>建置指定模組及其所有依賴的模組。`-amd`(also-make-dependents)為反向操作。
mvn -pl web -am packagemvn -T 4 <phase> / mvn -T 1C <phase>平行反應器:`-T 4` 使用 4 個執行緒;`-T 1C` 每個 CPU 核心一個執行緒。加速多模組建置。
mvn -T 1C clean install儲存庫
mvn help:effective-pom把最終合併的 POM(super-POM + parent POM + 啟用的 profiles + 當前設定)印成單一檔案——建置時的唯一真實來源。
-Doutput=<file>
mvn help:effective-pom > effective.xmlmvn help:effective-settings印出合併後的 `~/.m2/settings.xml` + 全域 + CLI `--settings`。排查 mirror/憑證解析時很有用。
mvn help:effective-settings -s ./settings.xmlmvn -s <settings.xml> <phase>為單次建置覆寫使用者 `settings.xml`——適合使用鏡像儲存庫的 CI。
mvn -s ./.mvn/settings.xml deployPlugins
mvn <plugin>:<goal>直接執行單一 plugin goal。常見:`compiler:compile`、`surefire:test`、`jar:jar`、`deploy:deploy`、`dependency:tree`。
-D<param>=<value> goal 參數;-X 除錯(非常詳細)
mvn compiler:compile && mvn surefire:test -Dtest=*ServiceTestmvn help:describe -Dplugin=<id>顯示 plugin 的所有 goal 與參數。`<id>` 替換為 `groupId:artifactId`。
mvn help:describe -Dplugin=org.apache.maven.plugins:maven-compiler-pluginProfiles
mvn -P<profile1>,<profile2> <phase>啟用 `pom.xml` 或 `settings.xml` 中 `<profiles>` 宣告的一個或多個 profile。
mvn -Pprod,fast testmvn -P!<profile> <phase>停用預設情況下會被啟用的 profile。
mvn -P!javadoc package除錯
mvn -X <phase>啟用除錯日誌——印出每個 plugin 執行、儲存庫查詢與下載 URL。可導入檔案。
-e 錯誤時輸出完整堆疊追蹤
mvn -X test > mvn-debug.log 2>&1mvn -e <phase>任何失敗都印出完整堆疊追蹤。與 `-X` 組合可取得最大細節。
mvn -e -X deploymvnDebug <phase>以 JDWP socket(預設埠 8000)暫停 JVM 啟動建置,方便在 Maven JVM 的第 1 行掛上除錯器。
mvnDebug testWrapper
./mvnw <phase>透過 Maven Wrapper 執行建置——使用 `.mvn/wrapper/maven-wrapper.properties` 中鎖定的 Maven 版本。請務必把 wrapper 簽入版本庫。
-Dmaven.version=<ver> 為此次執行升級 Maven
./mvnw clean installmvn wrapper:wrapper產生/更新 Maven Wrapper 檔案(`mvnw`、`mvnw.cmd`、`.mvn/wrapper/*`)。
-Dmaven=<version> 鎖定 Maven 發行版本
mvn wrapper:wrapper -Dmaven=3.9.6雜項
mvn --version印出 Maven 版本、JDK、OS 與地區設定。
mvn --versionmvn --help列出所有 CLI 旗標與支援的屬性。
mvn --help | head -40mvn -B <phase>批次/非互動模式——停用互動式提示與彩色輸出。CI 中用來避免因缺少屬性而卡住。
mvn -B -ntp clean verifymvn -ntp <phase>停用新的傳輸進度條(CI 推薦;減少日誌噪音,避免在慢速鏡像下 CPU 飆升)。
mvn -B -ntp clean deploymvn -o <phase>離線模式——絕不連線遠端儲存庫。若必要構件不在本地儲存庫,立即失敗。
mvn -o test相關命令速查
商標與使用聲明
本批命令列工具速查手冊為開源社群參考資料。文中涉及的各工具的名稱、標識、商標(如 Git™、Docker™、Kubernetes®、kubectl、PostgreSQL®、MySQL®、Redis™、MongoDB®、Linux™、PowerShell™、Vim™ 等)均歸對應權利人所有,此處僅為識別與參考之目的使用。
本速查手冊的全部內容均為獨立編寫的簡化自包含參考,**與任何官方文件不存在隸屬、被認可或引用關係**。命令列表、參數說明、範例均為作者原創簡化表達;如需權威資訊,請參閱各工具的官方文件。
命令語法與參數可能在不同工具版本中有所差異。所示版本標籤對應穩定發佈版本;其他版本行為可能有所不同。本速查手冊**不代表**商標權利人的任何偏好或推薦。
如商標或版權方認為本站部分內容存在權益侵害,請發送電郵至[email protected],我們在收到有效權屬證明後,會在合理期限內修改或移除相關內容。
本網站不對因使用本站資訊而產生的任何直接或間接損失承擔法律責任。
關於 Maven
Apache Maven 是 Java 專案管理與理解工具,於 2002 年首次亮相(最初由 Jason van Zyl 建立)。它以宣告式的 `pom.xml`(Project Object Model)描述專案,並執行有明確定義的建置生命週期,預設有八個階段:`validate`、`compile`、`test`、`package`、`verify`、`install`、`deploy`。Maven 是第一個主流 Java 建置工具,強制使用單一的儲存庫佈局(`groupId:artifactId:version`),並從遠端儲存庫(Maven Central)解析依賴。目前穩定版線為 Maven 3.9+。Maven 會把構件下載到本地儲存庫(預設 `~/.m2/repository`)並進行傳遞性解析,支援可選的 scope(`compile`、`provided`、`runtime`、`test`、`system`、`import`)。plugin 可擴充生命週期;常見的包括 `maven-compiler-plugin`、`maven-surefire-plugin`、`maven-jar-plugin` 與 `maven-deploy-plugin`。Profiles(`-P`)可依環境覆寫預設值。Maven 不會上傳源碼——`deploy` 只會發佈 `distributionManagement` 中設定的構件(jar/war/pom)。Wrapper 腳本(`mvnw`/`mvnw.cmd`)為每個專案綁定一個 Maven 版本,以鎖定工具鏈。
速查頁版本 1.0.0