4

プロジェクトで Maven フェイルセーフ プラグインが実行されません。mvn verify を実行すると、必ず確実に実行されます。mvn failsafe:verify と入力すると、次のエラーで失敗します。

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-failsafe-plugin:2.11:verify (default-cli) on project experiment-server: /home/user/workspace/MyProject-Main/MyProject-IntegrationTest/target/failsafe-summary.xml (The system cannot find the path specified) -> [Help 1]

だから私は基本的に同じ問題を抱えています:フェイルセーフプラグインはあるプロジェクトでは実行されませんが、別のプロジェクトでは実行されます-なぜですか? 私のpomがすでに次のようになっているという違いがあります:

<plugin>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>2.14.1</version>
    <executions>
        <execution>
            <id>failsafe-integration-tests</id>
            <phase>integration-test</phase>
            <goals>
                <goal>integration-test</goal>
            </goals>
        </execution>
        <execution>
            <id>failsafe-verify</id>
            <phase>verify</phase>
            <goals>
                <goal>verify</goal>
            </goals>
        </execution>
    </executions>
</plugin>

そして、これがこの男たちの問題の解決策でした。このサイトの解決策を除いて、私にはうまくいきませんでした。誰かが私が台無しにした場所を指摘できますか?

また、統合前フェーズで exec-maven-plugin を使用してサーバーを起動したいという問題もあります。しかし、 mvn-verify を試すと、最後に実行されます。

4

2 に答える 2

6

これを見つけたところ、解決策はここにあります:http://maven.apache.org/surefire/maven-failsafe-plugin/plugin-info.html

たとえば、maven-compiler-plugin とは対照的に、maven-failsafe-plugin は、デフォルトの maven ビルド ライフサイクルにはありません。

したがって、次のタグ階層を尊重する必要があります。

<project>
  <build>
    <pluginManagement>
      <plugins>
        <!-- For understanding only, below is the 'maven-compiler-plugin':
             its path is 'project -> build -> pluginManagement -> plugins
             -> plugin', because it's defaulty part of the maven build
             lifecycle: we just 'manage' it -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          ..
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <!-- HERE is the 'maven-failsafe-plugin':
           its path is 'project -> build -> plugins ->
           plugin', because it's NOT defaulty part of
           the maven build lifecycle: we have to
           'define' it, and not just manage it as
           stated earlier -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
        ..
      </plugin>
    </plugins>
  </build>
<project>

公式ドキュメント リンクからの引用: 「親 POM でプラグインのバージョンを定義するには」および「POM または親 POM でプラグインの目標を使用するには」。その違いに注意を払う必要があります。

于 2013-10-26T19:54:08.000 に答える
1

フェイルセーフ ポン スニペットを親のポンに移動したところ、うまくいったようです。理由がわかりません。

于 2013-05-18T08:58:40.963 に答える