You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么测试时仅forkCount为0时${maven.projectBasedir}/.mvn/jvm.config才生效

配置不生效的根本原因

.mvn/jvm.config中定义的JVM参数仅作用于Maven启动的主进程,而Maven Surefire插件默认会独立分叉新的JVM进程执行测试代码,分叉的子进程不会继承Maven主进程的JVM配置。
当你指定-DforkCount=0时,测试代码会和Maven主进程共用同一个JVM,此时.mvn/jvm.config的配置才会作用于测试逻辑,参数才会生效。你遇到的模块访问报错,本质是测试运行的JVM没有拿到--add-opens权限配置。

更简洁的解决方案

两种方案无需每次执行命令时手动加-DforkCount=0:

方案1:在pom.xml中配置Surefire插件参数(推荐,项目内共享配置)

直接将需要的JVM参数配置到Surefire插件的argLine中,所有开发人员拉取代码后无需额外调整即可直接运行:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>3.0.0-M5</version>
      <configuration>
        <argLine>--add-opens=java.base/java.lang=ALL-UNNAMED</argLine>
      </configuration>
    </plugin>
  </plugins>
</build>

方案2:本地配置无需修改pom

在项目根目录的.mvn文件夹下新建maven.config文件,写入以下内容即可:

-DargLine=--add-opens=java.base/java.lang=ALL-UNNAMED

Surefire插件会自动读取argLine系统属性作为测试JVM的启动参数,无需手动加命令参数即可生效。

内容的提问来源于stack exchange,提问作者gouessej

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 18:27:04