☰
mvnd 0.7.1 Windows安装与配置:Maven常驻后台加速构建实战
2026/10/13 5:50:36 网站建设 项目流程

简介:mvnd-0.7.1-windows-amd64.zip 是面向 Windows 平台 AMD64 架构的 Maven 加速构建工具,专为需要频繁编译、测试、打包的 Java 开发者设计,尤其适合处理大型多模块项目或持续集成流程中的构建瓶颈。它通过常驻 JVM 守护进程与并发构建策略,省去每次构建的启动开销,不仅减少重复加载,还能更充分地利用 CPU 资源,从而显著缩短构建周期并提升整体效率。压缩包共包含 94 个文件,以 56 个 jar 核心库、exe/cmd 启动脚本、xml 配置、license 许可及 txt 说明文档为主,整体约 24.89MB;bin 目录提供 mvnd.exe、mvnd.cmd 等可执行程序,conf 目录提供 mvnd.properties 与 logback 配置,目录划分清晰,便于解压即用。目前已有 278 人学习下载,实用性得到初步验证。按官方说明配置环境变量后,可无缝替换原有 maven 命令,加快编译、测试与打包节奏,适合追求构建提速和 CI 优化的开发者,也可作为团队构建基础设施的备选方案。

1. mvnd-0.7.1-windows-amd64.zip 是什么:给 Maven 构建加一个常驻后台

你刚拉下一个多模块 Spring Boot 工程,第一次mvn -T 1C clean package跑了 2 分半,你以为是自己机器慢,结果第二次跑还是 2 分半——因为 Maven 每次都要重启 JVM、重新加载插件、重新解析依赖。mvnd(Maven Daemon)就是把 Maven 装进一个常驻后台进程里,第一次构建后 JVM、插件类加载、依赖解析结果都留在内存中,后续构建能省掉启动和类加载的开销,多模块项目实测经常能把十几次构建从几分钟压到几十秒。这个 zip 包就是 mvnd 0.7.1 针对 Windows 64 位(AMD64)的官方发行包,解压即用。适合三类人:本地每天跑几十次 Maven 命令的 Java 开发,用 Jenkins 或流水线但想在本地先快速验证的碰壁党,以及被“每次构建前几秒都在读依赖”烦到的人。下面直接讲怎么装、怎么换、怎么避开 Windows 上的坑。

2. 在 Windows 上安装 mvnd 0.7.1:解压、环境变量与版本验证

mvnd 的发行包不需要安装程序,本质是一个自带的 Maven 内核 + 一个原生客户端(mvnd.exe)+ 一组批处理脚本。安装的核心就是在你已有的 JDK 之上,把 mvnd 的 bin 目录暴露给 PATH。这一步看似简单,但 90% 的翻车都发生在解压路径含空格、JAVA_HOME 没配置、以及用错架构三个地方。

2.1 解压前的检查:JDK 版本与系统架构

先确认你这台 Windows 是 x86_64 还是 ARM64。标题里的 amd64 指的就是 x86_64 架构,绝大多数 Intel、AMD CPU 的 Windows 都满足。如果是 Windows on ARM,这个包不能让 Daemon 以原生方式跑,需要另找 arm64 包。检查方式很简单:

echo %PROCESSOR_ARCHITECTURE%

输出 AMD64 就能用这个 zip。接下来检查 JDK。mvnd 自己不带 JVM,它依赖系统环境里的 JAVA_HOME。mvnd 0.7.1 要求 JDK 11 及以上,我自己一般用 JDK 17 或 21,因为后面很多新插件也都在往 17+ 靠。确认命令:

java -version javac -version

如果java -version能输出类似openjdk version "17.0.10"这样的信息,说明 JDK 可用。如果没输出,或者输出的是 JRE 1.8,先装一个 JDK,并设置 JAVA_HOME(常见路径C:\Program Files\Java\jdk-17)。注意:mvnd 读取的是 JAVA_HOME,不是 PATH 里的 java 目录,所以要确保环境变量里存在 JAVA_HOME。这一步是后面所有操作的前提,别跳。另外,如果你机器上有多个 JDK,而某个项目强制要求 JDK 21,那还需要单独设置MVND_JAVA_HOME来覆盖默认的 JAVA_HOME,这个到 2.4 再讲。

2.2 解压、放置目录与环境变量配置

把 mvnd-0.7.1-windows-amd64.zip 解压到固定目录。我的习惯是在C:\tools下放所有命令行工具,避免放进C:\Program Files这种带空格和权限控制的路径。虽然 mvnd 理论上支持带空格的路径,但 Windows 批处理脚本对引号的处理在不同终端下表现不一样,为了少踩坑,放在纯英文无空格的路径最稳。PowerShell 解压命令:

Expand-Archive -Path C:\Downloads\mvnd-0.7.1-windows-amd64.zip -DestinationPath C:\tools\mvnd

解压后你会看到C:\tools\mvnd\mvnd-0.7.1-windows-amd64\bin\mvnd.cmd。然后把这个 bin 目录加到用户 PATH。图形界面“环境变量”自行添加也行,命令行批处理方式也常见:

setx PATH "%PATH%;C:\tools\mvnd\mvnd-0.7.1-windows-amd64\bin"

注意setx有 1024 字符限制,如果 PATH 很长容易被截断,所以更稳妥的做法是把 mvnd 的 bin 单独写进一个变量,比如MVND_HOME,再把%MVND_HOME%\bin加入 PATH。设置变量:

setx MVND_HOME "C:\tools\mvnd\mvnd-0.7.1-windows-amd64" setx PATH "%PATH%;%MVND_HOME%\bin"

setx只对之后的新终端生效,所以先把当前终端关掉再重开,然后执行mvnd -v。这里有一个特别容易忽略的点:mvnd 自 0.6 之后提供了mvnd.exe原生客户端,比mvnd.cmd启动更快,也更少被 PowerShell 执行策略影响。如果你在 PowerShell 或 cmd 里直接打mvnd,优先会命中mvnd.exe。要确认命中正确文件,执行:

where mvnd

如果输出里有C:\tools\mvnd\...\bin\mvnd.exe或mvnd.cmd,说明 PATH 生效。还有一种情况:你之前装过其他版本的 mvnd,where mvnd会列出所有命中项,排在最前面的才是实际调用的,顺序不一致时把当前 bin 放到 PATH 最前面即可。

2.3 验证安装:mvnd -v 和第一个构建

新开一个普通终端(不要用管理员权限,这个很有讲究,后面避坑会细说),运行:

mvnd -v

第一次运行会输出 mvnd 自身版本、内置 Maven 版本、Java 版本、操作系统信息。如果出现类似 “Failed to create JVM: 找到主类” 或 “Could not reserve enough space” 的错误,优先检查 JAVA_HOME 是否配置正确;如果 JAVA_HOME 指向的是 JRE,而不是 JDK 的完整安装目录,也会导致创建守护进程失败。mvnd -v正常后,再跑一个真实项目试一下:

mvnd clean install -DskipTests

第一次执行会有一个 “Starting daemon” 或 “Daemon started” 的提示,构建结束后 daemon 继续留在后台。第二次再执行同样的命令,响应时间会有明显下降。这就是 mvnd 的核心价值:把构建工具本身的热身成本摊到了第一次构建里。验证安装的关键是看mvnd -v的 Java 版本和内置 Maven 版本,确认和你当前项目的要求不冲突。比如项目用了 Maven 3.9 才有的新特性,mvnd 0.7.1 内置 Maven 3.9.x 时没问题;如果你项目里配置了 maven-enforcer 插件要求严格 Maven 3.6,这个内置版本自然满足。具体内置版本以mvnd -v输出为准。

2.4 认识 mvnd 的进程模型:客户端、daemon 与 .m2 目录的关系

mvnd 的架构不像 mvn 那样一个命令一个 JVM,而是分成两层:你敲的mvnd是一个很薄的客户端(native image 编译出来的,冷启动只有几毫秒),真正干活的是一个常驻后台的 daemon 进程。客户端只负责把命令行参数、当前工作目录、环境变量编码后,通过本地 IPC 通路(Windows 下是命名管道)交给 daemon;daemon 拿到后在它的 JVM 里执行 Maven 构建,再把输出流回传客户端打印。两者靠一套与 PID 绑定的文件握手,这些握手文件就存在你的用户目录下的.m2\mvnd\registry-<hash>和多个日志文件中。

所以 mvnd 不是简单地“多了一个后台 java”,而是改变了构建的生命周期。当你连续执行多条 mvnd 命令时,第二次、第三次都不会再重新加载 Maven 插件和解析依赖(除非 pom 或依赖发生变更),而是直接在守护进程里复用这些对象。这也是为什么它的加速效果在“一次性连续构建多个分支 / 多次 clean install”的场景里特别明显。理解这个模型后,你就能明白几个配置的归属:MVND_HOME指定客户端和 daemon 的安装位置;MVND_JAVA_HOME可以单独指定启动 daemon 的 JVM,如果项目要求 JDK 17 但系统 JAVA_HOME 是 JDK 21,这个变量就很关键;daemonOpts设置的是 daemon 的 JVM 堆参数,而普通客户端参数则照常写在命令行或mvnd.properties。在 Windows 上尤其建议设置MVND_JAVA_HOME,因为很多 Windows 系统里 JAVA_HOME 可能被某些安装包改成了 JRE 目录,单独指定能避免 4.1 节说的启动失败。

3. 从 mvn 切换到 mvnd:settings.xml、并行参数与三个常见误用

安装只是第一步,真正要提升日常效率,得把 mvnd 当作 mvn 的一个“带记忆的替身”来用。mvnd 从设计上就兼容 Maven 的命令行参数,但它和 mvn 在配置继承、进程管理、构建并发三个维度上有明显差异,理解这些差异才能避免“换了命令反而翻车”。

3.1 mvnd 如何继承 Maven 的 settings.xml、本地仓库与镜像

mvnd 不读系统 PATH 里的 mvn,它自带 Maven 内核,但所有用户级配置仍然走同一个地方:用户主目录下的.m2\settings.xml。所以你原本配置的镜像(阿里云、腾讯云、公司私服)、本地仓库路径(<localRepository>)、私服账号信息,mvnd 都会自动继承。这一点让迁移成本很低,但也要确认几件事:第一,settings.xml 里的 localRepository 如果指向网络磁盘或同步盘,mvnd 的多 daemon 并发同步可能比 mvn 更容易出现文件锁问题;第二,settings.xml 里配置的 mirror 不能使用相对路径,否则 daemon 访问时会报 “Unable to fetch” 而 mvn 却正常;第三,mvnd 的 daemon 进程以当前用户身份运行,如果 settings.xml 里的私服凭据权限是“仅当前用户可读”,普通终端启动 mvnd 没问题,但如果你用管理员终端启动过,daemon 身份变成管理员,之后普通终端连不上这个 daemon,私服凭据读取也会出现诡异的“能认证但连不上”。

我的建议是:迁移到 mvnd 之前,先把 settings.xml 里的路径全写成绝对路径,镜像仓库写在私服配置里,不要在 settings.xml 里依赖用户目录的相对路径变量。mvnd 会复用 mvn 的本地仓库,但不代表它可以和 mvn 同时操作同一个仓库,这一点在避坑章再展开。

3.2 必调参数:-T 并行编译、-DskipTests、--no-transfer-progress

mvnd 的加速很大程度来自并行构建。Maven 原生支持-T参数,但 mvn 默认单模块串行,-T 1C经常会因为模块间依赖关系不明显而收益有限;mvnd 在分配线程时会主动分析模块依赖图,把无依赖关系的模块放到多个线程里。常用命令是:

mvnd -T 1C clean install -DskipTests --no-transfer-progress

解释一下每个部分:-T 1C表示一个 CPU 核心跑一个构建线程,多核机器上最多可以用满;如果你的项目内存吃紧,可以改成-T 2或者干脆不写,mvnd 默认会按 CPU 数目开线程,但注意过高的并行度会同时打开大量文件句柄,Windows 上容易触发 “EMFILE” 或莫名其妙失败。clean install是标准生命周期,但 mvnd 在增量场景下经常不 clean 也会正确处理旧产物,所以我一般只在需要保证干净产物时才加 clean。-DskipTests跳过测试执行,但会编译测试代码;如果你连测试代码都不想编译,用-Dmaven.test.skip=true,这两个参数语义不同,别混用。--no-transfer-progress是 Maven 3.6.2+ 的参数,不打印依赖下载的进度条,减少日志噪音,配合 mvnd 的 daemon 日志能让你看清真正的构建阶段。另外,mvnd 支持-Dstyle.color=always让 log 带颜色,不过 Windows 的旧 cmd 终端对 ANSI 支持差,PowerShell 7 或 Windows Terminal 没问题。

这里给一个我常用的参数对照表,方便切换时查:

需求mvn 写法mvnd 写法说明
并行构建mvn -T 4mvnd -T 4两者一致,mvnd 对线程分配更激进
跳过测试执行mvn -DskipTestsmvnd -DskipTests仍编译测试代码
跳过测试编译mvn -Dmaven.test.skip=truemvnd -Dmaven.test.skip=true测试代码整体不编译
强制刷新快照mvn -Umvnd -U处理远程 SNAPSHOT 更新
离线构建mvn -omvnd -o需要依赖已缓存

3.3 常见误用:alias 替换、打错参数、以及忽略了 .mvn 目录

很多人图省事,直接在 shell 里alias mvn=mvnd。这个做法短期看起来没问题,但踩过坑的人都知道:一是某些 IDE 或脚本调用 mvn 时不会经过 alias,导致行为不一致;二是 mvnd 和 mvn 在-P配置文件的激活逻辑上有细微差别——mvnd 会额外读取.mvn\maven.config和.mvn\jvm.config,如果你的项目在.mvn\maven.config里写了-T 4,mvnd 会依据它调整线程池,但 mvn 的-T参数优先级更高,两者混合用会造成“明明我命令行没写 -T,构建却很慢/很快”的错觉。正确做法是统一入口:要么整个 CI 脚本都改成 mvnd,要么都保留 mvn。

第二个误用是把 mvnd 当成 Maven 的替代环境后,忘记它内置 Maven 版本和系统 mvn 不一致。比如你项目 pom 里指定了<maven.compiler.source>17</maven.compiler.source>,而 mvnd 内置的 Maven 使用不同版本的 maven-compiler-plugin,可能出现细微的编译顺序差异。遇到这种问题,别急着下“mvnd 破坏构建”的结论,先在项目根目录跑mvnd help:effective-pom,对比 mvn 的输出,再决定要不要锁定 Maven 版本。

第三个误用是针对多模块的:mvnd 的默认工作目录是当前目录,但它构建多模块时会为每个模块设置独立的工作线程。如果插件里有硬编码的基于basedir之外的绝对路径,或者使用了线程不安全的静态变量,在 mvnd 的并行线程下更容易暴露出来,这在 mvn -T 下偶发,mvnd 下变高频。遇到这种“并行才出错”的插件,把对应模块用-pl单独构建,或者用-T 1降级验证。

3.4 多模块项目里 -pl/-am 与 mvnd 的搭配

多模块项目最常见的场景是只改了一个模块,然后希望只构建它以及依赖它的下游模块。mvn 的做法是mvn install -pl moduleA -am,mvnd 完全继承了这个参数语义,但有一个关键差异:mvnd 的守护进程会缓存每个模块的依赖图,当你执行mvnd install -pl moduleA -am -DskipTests时,它还会额外校验模块间版本号是否存在歧义。如果上次构建后在 pom 里改了版本号,或者某个模块的 SNAPSHOT 被外部覆盖更新了,mvnd 可能会报 “Could not resolve dependencies for project” 而 mvn 却能正常构建。这不是 mvnd 的 bug,而是它默认使用--no-transfer-progress时会把部分远程仓库的过期状态一并缓存了。解决方式也很简单:让 mvnd 强制刷新 SNAPSHOT,加-U参数即可:

mvnd install -pl service-impl -am -U -DskipTests --no-transfer-progress

这里-pl指定要构建的模块为 service-impl,-am表示同时构建它依赖的上游模块,-U强制检查远程仓库的 SNAPSHOT 和合版本。注意-U会降低命中本地缓存的概率,平时不要加,只有在遇到“明明远程有新版依赖,mvnd 却说没变”的时候加一次。此外,如果你经常需要构建同一个模块组合,可以把参数写进项目根目录的.mvn\maven.config或~\.m2\mvnd.properties里,但这两个文件的作用范围不同,前者随项目共享,后者只对当前用户生效。我一般把-T 1C -DskipTests --no-transfer-progress这种全局偏好写在~\.m2\mvnd.properties,把-pl这类跟项目相关的写在.mvn\maven.config,这样不同项目之间不会互相污染。

4. mvnd 避坑指南:五个 Windows 专属的翻车现场与处理办法

mvnd 在 Windows 上的问题多半不是 mvnd 自身的问题,而是 Windows 的权限模型、路径语义和进程管理与 Unix 完全不同导致的。这一章按“现象 → 原因 → 解决”的记录方式列出五条最典型的踩坑,都是我见过至少三次以上的。

4.1 现象:mvnd 启动后一闪而过,或报 “Failed to create JVM”

具体表现:在 cmd 里执行mvnd -v,窗口瞬间关闭,或者报错Failed to create JVM: JRE path does not exist。原因:JAVA_HOME 指向了一个不存在的路径,或者 JAVA_HOME 指向的是 JRE 而不是 JDK。mvnd 的守护进程需要从 JAVA_HOME 找到jvm.dll和java.exe,JRE 目录里没有jvm.dll,所以创建 JVM 失败。解决:检查echo %JAVA_HOME%,确认路径存在且其下有bin\server\jvm.dll;如果没配置,用setx JAVA_HOME "C:\Program Files\Java\jdk-17"设置;如果你有多个 JDK,优先让 mvnd 使用项目要求的版本。还有一种情况:在 PowerShell 下启动,PowerShell 会拦截 native 命令的 stderr,导致看不到真正的错误,这时改用 cmd 窗口跑一次where mvnd和mvnd -v,定位会顺利很多。

4.2 现象:守护进程在管理员终端启动后,普通终端连接不上

具体表现:你某个 DOS 窗口以“管理员身份”运行了mvnd clean install,开始正常。过一会儿换个普通终端执行mvnd -v,报error: start the windows daemon from a non-elevated terminal; shared clients或者客户端卡在 “Creating daemon” 直到超时。原因:Windows 的命名管道和共享内存有完整性级别(integrity level)。管理员终端的 daemon 进程完整性级别比普通终端高,普通客户端无法访问它的命名管道,于是客户端认为 daemon 不存在,试图再次启动 daemon,结果又受到现有 daemon 的端口或文件锁影响,形成僵局。解决:把所有的 mvnd 使用都放在非管理员终端里。如果已经启动了管理员权限的 daemon,先杀掉它,再在新终端重新启动。杀 daemon 有两个办法:在管理员终端里执行mvnd --stop(因为管理员能连接管理员 daemon),或者直接taskkill /F /IM mvnd.exe和taskkill /F /IM mvnd-server.exe(进程名可能因版本而异,用tasklist | findstr mvnd找)。杀掉后,从普通终端重新跑mvnd -v即可。

4.3 现象:mvnd 和 mvn 混用,本地仓库出现损坏 .lastUpdated 文件

具体表现:项目里一部分构建命令还是 mvn,另一部分改成了 mvnd,交替执行后,本地仓库里出现大量*.lastUpdated文件,或者某个依赖本来有 jar,mvn 却报“找不到依赖”。原因:mvn 和 mvnd 是两个独立进程,但它们共用同一个本地仓库。mvn 对本地仓库的并发写没有锁,mvnd 虽然内部有锁,但锁不住外部 mvn 进程。当两个进程同时解析同一个 SNAPSHOT 或下载同一个文件时,后半段覆盖前半段,就会留下半截文件。解决:最彻底的方案是给 mvnd 单独指定本地仓库路径,例如-Dmaven.repo.local=C:\Users\you\.m2\mvnd-repo,这样两个工具的产物不冲突,但代价是要重新下载一遍依赖。折中方案是:在同一台机器上,只让其中一个工具执行“安装型”命令(install/deploy),另一个只做“编译型”命令(compile/test),同时不要开两个终端并行构建同一个项目。如果仓库已经坏了,用find ~/.m2/repository -name "*.lastUpdated" -delete或手动删掉对应目录,下次构建会重新下载。

4.4 现象:daemon 常驻内存暴涨,机器进入“假死”状态

具体表现:mvnd 跑完一个大项目后,任务管理器里有个 java 进程占用 4~5GB 内存,不跑项目也不释放,同时再开别的 IDE 或 Docker 就卡。原因:mvnd 的 daemon 默认堆大小跟随 JVM 默认值(比如 1/4 物理内存),对于大型多模块项目,构建过程中堆会膨胀到几个 GB,构建结束后 JVM 不会立即把内存还给操作系统。解决:在~\.m2\mvnd.properties里给 daemon 设置合理的最大堆,写法是:

daemonOpts=-Xmx1024m -XX:MaxMetaspaceSize=256m

然后执行mvnd --stop重启 daemon。如果希望 daemon 空闲一段时间后自动退出,可以设置空闲超时参数idleTimeout(单位是秒),比如idleTimeout=300,这样闲置 5 分钟后守护进程自动结束,内存释放。注意daemonOpts只会对新启动的 daemon 生效,改完必须 restart。

4.5 现象:升级项目依赖或 Maven 插件后,mvnd 仍然在“用旧版本”构建

具体表现:你在 pom 里升了 spring-boot 的版本,或者改了 maven-compiler-plugin 的版本,然后跑mvnd clean install,构建日志里看起来还是旧版本,只有强制 clean 后才有变化。原因:mvnd 的守护进程会缓存项目的插件描述符和依赖解析模型,当 pom 发生变化时它本应自动失效缓存,但如果 pom 的修改时间戳没有变化(比如用 Git 恢复文件,或者某些 IDE 保存时不改文件时间戳),守护进程就认为模型没变,直接复用内存中的旧结果。解决:不轻易相信时间戳,改用显式参数或命令让 mvnd 认为“一定是新构建”:加-U强制刷新依赖,加-Dmaven.enforcer.skip=true跳过可能是旧缓存的混淆因素,或者干脆mvnd clean后再 install。还有一个更实用的办法:每次切换分支或拉取代码后,用mvnd --stop停掉 daemon,再跑第一次构建,让 daemon 以全新状态启动,这样能规避大部分缓存不一致问题。我的经验是,看到“seconds”构建耗时突然比上一次还高,往往就是守护进程重新加载模型了,不用慌。

5. 让 mvnd 更好用的三个小技巧:日志查看、离线复用与参数记忆

mvnd 用顺以后,你会觉得它像个黑匣子:构建快了,但出了问题也不知道守护进程里发生了什么。下面三个小技巧能帮你把黑匣子打开,既能看到后台行为,也能让常用参数不再每次敲。

5.1 看守护进程日志:定位“明明没跑代码却构建失败”的问题

mvnd 的守护进程日志默认写在用户目录的.m2\mvnd目录下,文件名是daemon-<pid>.log或类似。当你在客户端看到成功的输出,但想确认某次构建真正做了什么时,打开这个日志看里面的 INFO 和 WARN 级别记录,能发现 mvn 输出里被吞掉的错误。排查步骤:先mvnd --status查看当前 daemon 的 PID 和状态,然后到%USERPROFILE%\.m2\mvnd下按时间排序找最新的 log 文件。注意这个目录里可能还有registry之类的文件,那是守护进程索引,不用管。

5.2 离线复用:让 mvnd 在无网环境下也保持高速

如果你们公司局域网拉取依赖网络不稳定,可以先把完整依赖下载到本地仓库,然后用--offline或-o参数让 mvnd 不联网。mvnd 完全支持:

mvnd -o clean install -DskipTests

离线模式下,mvnd 仍会调用守护进程,但不会去远程仓库检查 SNAPSHOT 和元数据。我第一次用这个参数时以为只要缓存里有就行,结果发现如果 pom 里引用了本地仓库产出的模块,而该模块还没 install,离线模式也会失败。所以离线复用的前提是先把整个工程的所有依赖和模块都 install 到本地仓库一次。之后在~\.m2\mvnd.properties里写mvnd.opts=-o或直接写mvndDefaultOpts=-o,可以做到全局默认离线,但后期容易忘了更新依赖,建议只在网络出问题时临时用。

5.3 参数记忆:把常用配置写进 mvnd.properties

mvnd.properties 是用户级的配置文件,路径是~\.m2\mvnd.properties。你可以在这里写默认的 JVM 参数和客户端参数,不用每次命令行敲。常见的配置项有:

配置项示例值说明
daemonOpts-Xmx1024m -XX:MaxMetaspaceSize=256m守护进程 JVM 参数
idleTimeout300daemon 空闲多少秒后退出
mvnd.opts-T 1C --no-transfer-progress客户端启动时附加的构建参数

这个表给出的是我自己用着顺手的值,不同项目按需调整。注意 daemonOpts 修改后需要mvnd --stop重启 daemon 生效;mvnd.opts 里的参数会被命令行显式参数覆盖,所以如果命令行写了-T 2,配置文件里的-T 1C会失效。我现在的习惯是:全局只写 daemonOpts 和 idleTimeout,项目相关的并行度、跳测试放在.mvn\maven.config里,这样每个项目团队能共享统一构建行为。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询