2

サードパーティ アプリケーション用のプラグイン フレームワークのさまざまなコンポーネントを構築する多数の Maven プロジェクトがあります。集約 (<modules> 要素) を使用して、すべてのサブ プロジェクトを含むマスター プロジェクトがあります。このマスター プロジェクトは、maven アセンブラー プラグインも呼び出します。これで、すべてのサブプロジェクトをビルドし、アセンブラーにそれらの出力/ファイル/ソース/リソースなどをマスター ビルド ディレクトリにコピーさせてから、これらすべてのファイルを 1 つの配布 zip に圧縮できます。次のコマンドでこれを行います。

mvn パッケージ アセンブリ:アセンブリ

これはすべてうまくいきます。このzipファイルを別のmavenプラグインに渡し、それを開いてzipコンテンツをリストするカスタムマニフェストファイルを作成し、このマニフェストファイルをzipファイルに挿入したいと思います。これを行うためのプラグインを作成しましたが、正常に動作します。

私の問題は、ビルド プロセスの一部としてこのプラグインを maven で実行することです。

プラグインはアセンブラからの出力を必要としますが、アセンブラの後にプラグインを実行する方法はないようです。

誰でも助けることができますか?

4

1 に答える 1

1

ターゲット/アセンブリでアセンブリを作成するためにアセンブリがすでに定義されていると仮定すると、プラグインの実行を標準ライフサイクルmvn installのフェーズにバインドするだけで、たとえば、そのライフサイクル中にプラグインを実行して実行できます。

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <executions>
      <execution>
        <id>generate-assembly</id>
        <phase>package</phase>
        <goals>
          <goal>single</goal>
        </goals>
        <configuration>
          <!--your configuration here -->
          ...
        </configuration>
      </execution>
    </executions>
  </plugin>

次に、プラグインの実行を後のフェーズ(統合テストなど)にバインドして、アセンブリファイルにアクセスできるようにします。

  <plugin>
    <groupId>your.plugin.groupId</groupId>
    <artifactId>your-artifactId</artifactId>
    <executions>
      <execution>
        <id>mung-manifests</id>
        <phase>package</phase>
        <goals>
          <goal>your-goal-name</goal>
        </goals>
        <configuration>
          <assemblyDirectory>${project.build.directory}/assemblies</assemblyDirectory>
        </configuration>
      </execution>
    </executions>
  </plugin>

このアプローチを使用すると、各プラグインは、実行時に関連するフェーズ(パッケージ)で実行されますmvn package(または、インストール、検証、デプロイなどの後のフェーズ)。

プラグインは、後で実行されるように、アセンブリプラグインのに定義する必要があることに注意してください(同じフェーズにある場合にのみ、異なるフェーズにある場合は順序は関係ありません)。

于 2009-09-18T15:48:27.357 に答える