0

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

4

1 回答 1

3

菜鸟失误。我使用的配置被列在一个<profile>没有被执行的单独块中。个人资料:

<activeByDefault>true</activeByDefault>

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

于 2013-10-17T11:33:10.233 回答