我们的 POM 定义了 maven-surefire-plugin
如下:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.14</version>
<configuration>
<reuseForks>false</reuseForks>
<forkCount>1</forkCount>
<argLine>-Xms64m -Xmx256m</argLine>
<includes>
<include>**/*Test.java</include>
</includes>
</configuration>
</plugin>
但是,我们的 Java 测试(涉及一些并行测试和静态单例)仅当我们使用以下命令运行测试阶段/构建时才能正常运行:
mvn test -DforkMode=always
奇怪的是,即使我们改变了 <configuration>
使用(而不是较新的选项):
<forkMode>always</forkMode>
然后运行:
mvn test
它会失败。但是如果我们运行:
mvn test -DforkMode=always
一切都会过去的。仅当我们明确提供 forkMode
时,它仍然才会起作用,而不是较新的选项。在命令行上。我们已经用多个版本的 Surefire 插件进行了尝试,达到了相同的效果。
是否存在可以覆盖此属性的任何位置,或者存在未正确使用 XML 配置的已知问题?
最佳答案
菜鸟错误。我使用的配置列在单独的 <profile>
中未执行的 block 。配置文件包含:
<activeByDefault>true</activeByDefault>
根本不包含自己的 Surefire 配置(因此它不会出现在搜索中),并且使用继承的值,这解释了为什么命令行系统属性能够影响其行为。
关于java - Maven Surefire 仅在命令行上确认 "forkMode",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19414348/