mvnd
Maven Daemon 1.0+Maven Daemon(mvnd)指令速查 —— 長駐 JVM 背景處理程序的 mvn 包裝,所有 mvn 子指令均可直接使用,外加守護程序管理指令(--status / --stop / --shutdown)。
29 條命令
守護程序管理
mvnd --status列出所有執行中嘅 mvnd 守護程序:ID、JDK home、版本、執行時長、閒置時間、已完成/正在執行嘅建構數。指令稿中可用 `-o plain` 輸出純文字。
-o plain|json 輸出格式
mvnd --statusmvnd --stop停止一個閒置嘅守護程序,需傳入 `--status` 顯示嘅守護程序 ID。除非加 `-y`,否則會提示確認。
-y 略過確認
mvnd --stop 7d3c4e5f-a1b2-4c3d-9e0f-1234567890abmvnd --stop-all關閉所有執行中嘅 mvnd 守護程序。升級 JDK、切換 `JAVA_HOME`、或想冷啟動建構時使用。
mvnd --stop-allmvnd --shutdown`--stop-all` 嘅別名。行為一致;針對 mvnd 1.0+ 嘅指令稿推薦用呢個名。
mvnd --shutdownmvnd --version列印 mvnd 版本、啟動器嘅 Java 版本,以及守護程序所用 Maven 版本。可用嚟確認將建立或複用邊個守護程序。
mvnd --versionmvnd --create-daemon強制用當前 JDK 同 Maven 版本建立一個新嘅守護程序,而唔係複用舊嘅守護程序。切換 `JAVA_HOME` 後避免舊守護程序持有過期類別資料時好有用。
--user <name> JVM 配置預設
mvnd --create-daemon clean install生命週期階段(mvn drop-in)
mvnd validate校驗項目:解析 `pom.xml`、下載快照版本、檢查依賴。與 `mvn validate` 完全一致。
mvnd validatemvnd compile編譯 `src/main/java` 到 `target/classes`。守護程序預熱後比 `mvn compile` 顯著更快——JIT 已優化過常用插件。
-DskipTests; -T 4 平行執行緒數(轉發畀 mvn)
mvnd compilemvnd test執行 Surefire 單元測試。測試仍 fork 新 JVM(隔離不變),加速僅體現喺 Maven 側。
-Dtest=ClassName; -Dtest=Class#method; -DfailIfNoTests=false
mvnd test -Dtest=UserServiceTestmvnd package執行此前所有階段,再將輸出打包成 `target/*.jar`(或 `.war`/`.ear`)。
-DskipTests; -Dpackaging=jar
mvnd package -DskipTestsmvnd install執行 verify,再將生成嘅製品安裝到 `~/.m2/repository/`,供本機其他項目依賴。
mvnd install -DskipTestsmvnd clean install清空 `target/` 然後一路跑到 `install`。最常用嘅「從頭重建」指令。守護程序跨越 `clean` 仍然存活,所以 mvnd 比 mvn 快好多。
-U 強制更新 snapshot 依賴
mvnd clean install -Umvnd deploy建構並將製品發佈到 `pom.xml` 嘅 `<distributionManagement>` 指定嘅遠端倉庫。語義與 `mvn deploy` 一致。
-DskipTests; -P release 使用 release profile
mvnd deploy -P release -DskipTests守護程序調校
mvnd -Dmvnd.daemonStorage=<path> <phase>覆寫守護程序註冊目錄(預設 `~/.m2/mvnd/`)。按項目設獨立路徑可令每個 worktree 擁有自己嘅守護程序池。
mvnd -Dmvnd.daemonStorage=.mvnd clean installmvnd -Dmvnd.idleTimeout=<duration> <phase>守護程序閒置幾耐自動關閉。預設 3h。接受 `30s` / `5m` / `2h` / `1d`。
mvnd -Dmvnd.idleTimeout=30m testmvnd -Dmvnd.maxHeap=<size> <phase>限制守護程序 JVM 堆。預設 2G。其他工具爭記憶體時調細;大型多模組 OOM 時調大。
mvnd -Dmvnd.maxHeap=4G clean installmvnd -Dmvnd.threads=<n> <phase>mvnd 同時保活嘅最大守護程序數。預設 = CPU 核心數。調細可減少閒置記憶體;調大可令唔同 JDK/Maven 組合並行。
mvnd -Dmvnd.threads=2 testmvnd -Dmvnd.scheduler=simple|async <phase>守護程序選擇策略。`simple`(預設)揀最近用過嘅;`async` 為每種 Maven/JDK 組合各保留一個守護程序並按需分派。JDK 切換頻密時用 `async`。
mvnd -Dmvnd.scheduler=async install建構控制(透傳畀 mvn)
mvnd -DskipTests <phase>略過測試執行但仍編譯測試原始碼。與 mvn 一致——mvnd 原樣轉發所有 `-D` 系統屬性。
mvnd -DskipTests packagemvnd -T <n> <phase> / mvnd -T 1C <phase>平行 reactor 建構:`-T 4` 代表 4 執行緒,`-T 1C` 代表每 CPU 核心 1 執行緒。配合暖守護程序,`-T 1C clean install` 係 mvnd 下最快嘅全量建構。
mvnd -T 1C clean installmvnd -B -ntp <phase>批次處理/非互動/不顯示傳輸進度條。CI 推薦寫法——mvnd 關閉進度條與 ANSI 顏色,日誌解析更穩。
mvnd -B -ntp clean verifymvnd -X <phase>除錯日誌。列印每個插件執行與倉庫搵資料。輸出量大,建議重導向到檔案。
-e 出錯時列印完整堆疊
mvnd -X test > mvnd-debug.log 2>&1mvnd -pl <module> -am <phase>建構指定模組及其依賴。`-amd`(also-make-dependents)方向相反。標誌位與 mvn 完全一致。
mvnd -pl user-service -am testmvnd -s <settings.xml> <phase>今次建構用指定嘅 `settings.xml` 覆寫 `~/.m2/settings.xml`。CI 用嚟指向鏡像倉庫或發佈認證。
mvnd -s ./.mvn/settings.xml deploymvnd -o <phase>離線模式——本地倉庫缺製品就失敗。mvnd 原樣轉發此標誌;守護程序只負責自己嗰份解析工作。
mvnd -o test診斷
mvnd --log <phase>將守護程序側嘅 Maven 建構日誌串流輸出到前台(預設寫到 `~/.m2/mvnd/<daemon-id>/daemon.log`)。除錯只喺守護程序內發生嘅失敗時有用。
mvnd --log testmvnd --purge清空整個守護程序註冊目錄(預設 `~/.m2/mvnd/`)。JDK/Maven 大版本升級改變咗位元組佈局後,舊守護程序可能會報莫名其妙嘅錯——先 purge 再重建。
mvnd --purgemvnd --help列出所有 mvnd 專有標誌(`--status` 系列)。完整嘅 Maven 標誌(`-D` / `-P` / `-T` / `-pl` 等)請睇 `mvn --help`——mvnd 全部原樣轉發。
mvnd --help包裝器
./mvnw <phase>透過 Maven Wrapper 跑建構。如果想用 mvnd 透明替代,將 wrapper 軟連結/改名為 `mvndw`,或喺 `.mvn/maven.config` 中改成調用 mvnd。
./mvnw clean install相關命令速查
商標與使用聲明
本批命令列工具速查手冊為開源社群參考資料。文中涉及的各工具的名稱、標識、商標(如 Git™、Docker™、Kubernetes®、kubectl、PostgreSQL®、MySQL®、Redis™、MongoDB®、Linux™、PowerShell™、Vim™ 等)均歸對應權利人所有,此處僅為識別與參考之目的使用。
本速查手冊的全部內容均為獨立編寫的簡化自包含參考,**與任何官方文件不存在隸屬、被認可或引用關係**。命令列表、參數說明、範例均為作者原創簡化表達;如需權威資訊,請參閱各工具的官方文件。
命令語法與參數可能在不同工具版本中有所差異。所示版本標籤對應穩定發佈版本;其他版本行為可能有所不同。本速查手冊**不代表**商標權利人的任何偏好或推薦。
如商標或版權方認為本站部分內容存在權益侵害,請發送電郵至[email protected],我們在收到有效權屬證明後,會在合理期限內修改或移除相關內容。
本網站不對因使用本站資訊而產生的任何直接或間接損失承擔法律責任。
關於 Maven Daemon
Apache Maven Daemon(mvnd)係標準 `mvn` CLI 嘅包裝,由 Peter Palaga 發起,經過多年孵化後喺 Apache 軟件基金會下推出,1.0.0 穩定版於 2024 年發佈。mvnd 喺背景維護一個或多個長駐 JVM 守護程序,並將每次建構請求分派畀佢哋。佢複用 Maven 3.x 嘅 `pom.xml`、`~/.m2/repository`、所有插件同生命週期階段,所以係真·drop-in 替代品——`mvnd compile` 同 `mvn compile` 行為完全一樣,只係更快。加速嚟自三個層面:(1)JVM 只啟動一次並喺多次建構之間複用,跳過 `mvn` 每次調用 1-3 秒嘅 JVM 啟動開銷;(2)mvnd 用 GraalVM 做守護程序嘅 JDK,縮短預熱時間並降低常駐記憶體;(3)單一守護程序內可並行執行多模組建構。速度提升範圍由細型單模組項目嘅約 2 倍,到大型多模組 reactor 嘅 10 倍以上。mvnd 嘅守護程序註冊目錄位於 `~/.m2/mvnd/`(同 `~/.m2/repository/` 分開),容許多個守護程序使用唔同 JDK 並存。守護程序喺可配置嘅閒置超時(預設 3 小時)後自動關閉。所有處理都喺本地完成,原始碼或製品唔會上傳到任何地方。
速查頁版本 1.0.0