maven Surfere argLine是否覆盖。/mvn/jvm.config?
我有一个包含以下内容的项目。/mvn/jvm.config:maven Surfere argLine是否覆盖。/mvn/jvm.config?,maven,maven-plugin,maven-surefire-plugin,jvm-arguments,Maven,Maven Plugin,Maven Surefire Plugin,Jvm Arguments,我有一个包含以下内容的项目。/mvn/jvm.config: -Xms32g -Xmx64g -XX:MaxDirectMemorySize=20g 我想知道是否按如下方式配置我的maven冲浪插件: <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <ve
-Xms32g -Xmx64g -XX:MaxDirectMemorySize=20g
我想知道是否按如下方式配置我的maven冲浪插件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.9</version>
<configuration>
<argLine>-Xms12g -Xmx30g -XX:MaxDirectMemorySize=30g</argLine>
<suiteXmlFiles>
<suiteXmlFile>src/test/resources/RunMmoTests.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
org.apache.maven.plugins
maven surefire插件
2.9
-Xms12g-Xmx30g-XX:MaxDirectMemorySize=30g
src/test/resources/RunMmoTests.xml
我知道我的jvm.config将设置MAVEN_OPTS
环境变量,但我找不到任何说明MAVEN_OPTS和surfaceargLine
之间优先级的文档。哪一个优先于另一个?在运行了一些测试之后,我感觉surfaceargLine
覆盖了MAVEN\u OPTS
中定义的任何参数。我的猜测正确吗
非常感谢
如果argLine没有定义JVM选项,那么surefire是否会启动分叉JVM
是否继承.mvn/jvm.config中定义的jvm选项
不会的。构建项目的要求可能与运行测试的要求完全不同
以下是maven surefire的评论:
默认情况下,JVM将是与虚拟机相同的虚拟机的新实例
一个曾经是Maven的。JVM设置不是从MAVEN_选项继承的
当我们调用mvn命令(mvn.cmd
或bin/mvn
)时,Maven读取和设置不同的环境变量,并且在Linux和Windows中执行不同的操作
- 在Linux上,
命令通过 将现有的mvn
与MAVEN_选项
文件,然后调用java$MAVEN\u PROJECTBASEDIR/.mvn/jvm.config
作为参数MAVEN_选择
- 在Windows上,mvn命令
带有JVM\u CONFIG\u MAVEN\u PROPS
,然后调用javajvm.config的内容
和MAVEN\u选项
jvm\u config\u MAVEN\u道具
java
命令为执行测试提供了一个单独的过程,但它不会将MAVEN\u OPTS
或JVM\u CONFIG\u MAVEN\u PROPS
作为参数传递给JVM
如果您想为运行test和运行maven设置相同的JVM参数,那么可以在argline中使用${parameters}。例如:
<configuration>
<argLine>${MAVEN_OPTS}</argLine>
</configuration>
${MAVEN_OPTS}
首先,为什么要使用maven surefire插件的这么旧的版本?单元测试真的需要这样的内存设置吗?而且。运行64GiB的构建?你使用了多少百万个模块?你在运行什么maven版本/jdk等?我正在开发一个内存中的数据库,我们在堆上/堆下运行了一系列测试,其中包括数百万个输入数据,这就是为什么我需要使用不同的内存设置来运行我的测试。我正在使用:-Jdk 11-maven 3.6.1所以这是应该通过maven故障保护插件运行的集成测试,也应该使用最新的。。。那么为什么要使用如此古老的surefire版本呢?原因2.9大约是9岁?我强烈建议使用最新版本…那么为什么要为maven命令添加内存设置呢?我怀疑maven需要64 G来构建您的项目。在您的测试中,您可以这样做,但您应该使用这些东西……这些是扩展测试,而不是集成测试。关于surefire的问题,我不能真正回答这个问题,我不是维护这些测试的人,但我会建议所有者更新到更新的版本。64G不适合maven构建项目,它们是jvm选项。对不起,如果我误导了你,我没有提供完整的插件配置。请检查我的最新记录。运行不同的设置后,我可以确认这是我得到的:)