Maven Surefire只在命令行上确认“forkMode”

时间:2013-10-16 21:35:23

标签: java maven junit surefire

我们的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配置的已知问题?

1 个答案:

答案 0 :(得分:3)

菜鸟错误。我正在使用的配置列在一个未执行的单独<profile>块中。配置文件:

<activeByDefault>true</activeByDefault>

根本没有包含自己的Surefire配置(因此它没有显示在搜索中),并且使用了继承值,这解释了为什么命令行系统属性能够影响其行为。