27

デフォルトでは、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 build を実行することもできます。

$ mvn -Dmaven.surefire.debug tests

これにより、ポート 5005 でデバッガーが開始されます。

私の質問は次のとおりです。分岐戦略にはどのような利点があり、maven ビルドのデフォルト戦略として選択されるのはなぜですか? 非フォーク戦略はより簡単なので、デフォルトとして使用する必要があります (maven は構成ツールよりも慣例です)。

4

2 に答える 2

18

私の質問は、フォーク戦略にはどのような利点があり、Mavenビルドのデフォルト戦略として選択されるのはなぜですか?

デフォルトでは、SurefireはマニフェストのみのJARを使用してテストをフォークします。IMO、主な利点は次のとおりです。

  1. それは、何らかの形で「正しい」クラスパスを備えた隔離された環境を提供します。
  2. Mavenプロセス自体を保護します(これは、特にMavenがIDEに埋め込まれて実行されている場合は良いことです)。

非フォーク戦略はより単純ではないので、デフォルトとして使用する必要がありますか?

何のために簡単ですか?IDE内で簡単にデバッグできますか?それは当初の意図ではなかったと思います(必要に応じてリモートデバッガーを接続し、メインのMavenプロセスを安全に保つことを好みます)。

も参照してください

于 2010-07-06T13:33:43.170 に答える
1

forking モードは、「true」または「once」に設定されている場合、システム クラスパスをロードするのに役立ちます。しかし、maven-surefire 2.5 プラグインが使用されている場合、fork mode= true を設定すると、「コマンドラインが長すぎます」や「テストの失敗があります」などのエラーが発生することがあります。このエラーを回避するには、suefire プラグイン 2.5 を使用する場合は forkmode=never を使用することをお勧めします

于 2010-10-20T19:45:02.347 に答える