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