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複数のバージョンの確実なプラグインでこれを試しましたが、同じ効果が得られました。

このプロパティをオーバーライドできる場所や、XML 構成が適切に使用されていない既知の問題はありますか?

4

1 に答える 1

3

Rookie mistake. The configuration I was using was listed in a separate <profile> block that was not being executed. The profile with:

<activeByDefault>true</activeByDefault>

Did not include its own Surefire configuration at all (so it didn't show up in a search), and was using inherited values, which explains why the command-line system properties were able to affect its behavior.

于 2013-10-17T11:33:10.233 に答える