2

Maven ビルドの場合、展開されたディレクトリが war プラグインで作成された後、いくつかのファイルをコピーする必要があります。war:exploded ゴールの間/後に antrun プラグインを実行することは可能ですか? もしそうなら、どうすればいいですか?私はもう試した:

<build>
  <plugins>
    <plugin>
      <artifactId>maven-antrun-plugin</artifactId>
      <executions>
        <execution>
          <phase>war</phase>
          <goals>
            <goal>exploded</goal>
          </goals>
          <configuration>
            <tasks>
              <echo>Running ant task...</echo>
            </tasks>
          </configuration>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

他にもいくつかのバリエーションがありますが、実行できないようです。

理想的には、完全な war:war も実行する場合に ant タスクを実行したいのですが、ここに来たらこの橋を渡ります。

4

1 に答える 1

1

それを達成するには、少なくとも 2 つの方法があります。

プラグインの直接呼び出しの使用

mvn war:explodedoderを呼び出すときmvn war:warは、特定のプラグインの特定のゴールのみを呼び出します。他のプラグインは実行されません。pom.xml で定義された実行は関係ありません。結果として、いくつかのプラグイン ゴールを直接呼び出すことしかできませんでしたmvn war:exploded antrun:run

ただし、複数のモジュールをビルドするときは注意しmvn war:exploded antrun:runてください。各モジュールの war プラグインの後に antrun を実行します。mvn war:exploded; mvn antrun:run一方、すべてのモジュールに対してwar プラグインを実行し、次にすべてのモジュールに対して antrun を実行します。

プラグインのライフサイクル バインディングの使用

を呼び出すときは、デフォルトのライフサイクルから pre-integration-test までmvn pre-integration-testのすべてのフェーズを呼び出します。フェーズ「パッケージ」で目標「爆発」の war プラグイン実行を定義し、フェーズ「統合前テスト」で目標「実行」の antrun 実行を定義できます。


デフォルトのライフサイクルにはフェーズ「戦争」はありません。したがって、上記の例はデフォルトのライフサイクルでは機能しません。また、カスタム フェーズを使用したカスタム ライフサイクルには、カスタム プラグインが必要です。

于 2011-04-01T13:42:21.813 に答える