デフォルトでは、Mavenのsurefileプラグインは分離された(フォークされた)環境でテストを実行します。この動作は、次の構成でオーバーライドできます。
<build>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<forkMode>never</forkMode>
</configuration>
</plugin>
</plugins>
</build>
テストをデバッグする必要がある場合は、この構成スニペットを使用する必要があります。または、次の方法でMavenビルドを実行することもできます。
$ mvn -Dmaven.surefire.debug tests
これにより、ポート5005でデバッガーが起動します。
私の質問は、フォーク戦略にはどのような利点があり、なぜMavenビルドのデフォルト戦略として選択されるのですか?非フォーク戦略はより単純なので、デフォルトとして使用する必要がありませんか(Mavenは設定より規約です)?
私の質問は、フォーク戦略にはどのような利点があり、なぜMavenビルドのデフォルト戦略として選択されるのですか?
デフォルトでは、SurefireはマニフェストのみのJARを使用してテストをフォークします。 IMO、主な利点は次のとおりです。
非フォーク戦略はより単純なので、デフォルトとして使用する必要がありますか?
何のために簡単ですか? IDE内で簡単にデバッグできますか?それは当初の意図ではなかったと思います(必要に応じてリモートデバッガーに接続し、メインのMavenプロセスを安全に保つことを好みます)。
フォークモードは、「true」または「once」に設定されている場合、システムクラスパスをロードするのに役立ちます。ただし、maven-surefire 2.5プラグインが使用されている場合、fork mode = trueを設定すると、「コマンドラインが長すぎる」や「テストに失敗する」などのエラーが発生することがあります。このエラーを回避するには、suefireプラグイン2.5を使用しているときにforkmode = neverを実行することをお勧めします。