1

概要

デフォルト ライフサイクル<packaging>war</packaging>のの最初のフェーズは、をすぐに呼び出すためのものです。 process-resourcesmaven-resources-plugin

実行前にプラグインを実行するにはどうすればよいですか?

process-resources別のプラグインを最初に実行できるように、実行時に順序を変更する簡単な方法があることを望んでいました。

または、カスタム ライフサイクルの作成までは行かずに、以前のフェーズの 1 つを強制的にライフサイクルに含めることもできます。

war(パッケージングが使用されていないvalidationinitialization、どのタイプのビルドでも意味があるように見えるので、実際には驚いています)

詳細

buildnumber-maven-pluginを使用して生成し、フィルタリングを使用して *.properties ファイルに保存しようとして${buildNumber}います。これは通常、検証または初期化フェーズの一部として実行されます。process-resourcesそれで、それが最初だったので、実行のためにフェーズにバインドしようとしました。

問題は、がを生成する機会を得るmaven-resources-plugin前に、それが最初に実行されることです。他のすべてのプロパティは適切にフィルタリングされます。(おそらく後のステップで、またはマニフェストを使用して何かを行うことができることは承知していますが 、それは私が求めていることではありません)buildnumber-maven-plugin${buildNumber}maven-war-pluginweb.xml

プロセス リソース内で順序を変更できない場合はinitialization、既存の簡単な構成でフェーズを強制的にライフサイクルに含めることができると期待していました。pom.xml

おそらくcomponents.xml、カスタム ライフサイクルを定義するときのようなものです。

<configuration>
            <phases>
              <initialization>org.codehaus.mojo:buildnumber-maven-plugin:create</initialization>
            </phases>
</configuration>
4

3 に答える 3

1

Maven プラグインが同じフェーズでバインドされている場合、pom 内のリストの順序で実行さ maven-resources-pluginれますが、デフォルトではバインドされていますprocess-resourcesが、スーパー pom で宣言され、ビルドすると、スーパー pom、親 pom、および現在の pom が単一になります効果的なpomとして知られるpom(有効なpomを経由で確認できます mvn help:effective-pom

解決策に向かって、プラグインの実行順序を変更します。

  1. 最初に追加buildnumber-maven-pluginしてバインドしますprocess-resources
  2. buildnumber-maven-pluginに追加maven-resources-pluginしてプロセスリソースにバインドします

ビルドすると、process_resourcesフェーズ中に両方が実行されますが、 のbuildnumber-maven-plugin前に実行されmaven-resources-pluginます。

于 2013-08-11T02:35:43.563 に答える