3

@aggregator アノテーションを使用して Maven プラグインを開発しました。

私が走れば

mvn clean compile my:artifact:task package

その後、2回コンパイルします。

だから私はこのフラグメントを私のpomに挿入します

<plugin>
   <groupId>my</groupId>
   <artifactId>artifact</artifactId>
   <version>1.0.0-SNAPSHOT</version>
   <executions>
       <execution>
           <id>post-classes</id>
           <phase>process-classes</phase>
           <goals>
              <goal>task</goal>
           </goals>
      </execution>
   </executions>
</plugin>

ただし、各モジュールで実行されます(@アグリゲーターは無視されているようです)。

コンパイル後にプラグインを一度実行するにはどうすればよいですか?

編集: 私の問題は、Eclipse tycho のデフォルトのライフサイクルに関するものです。しかし、重大なバグがあり、非常に混乱しました。

4

1 に答える 1

1

これから:_

CLI から直接実行されるモジョの場合、モジョはリアクター内の各プロジェクトごとではなく、1 回だけ実行されます。ライフサイクル フェーズにバインドされたモジョの場合、ライフサイクル バインディングが存在する各プロジェクトに対してモジョが実行されます。

次の 2 つのオプションがあります。

  • アグリゲーター アノテーションの使用を主張する場合: ライフサイクル バインディングを削除し、「mvn clean compile my:artifact:task jar:jar」などのコマンド ラインから実行します。コマンド ラインから直接呼び出されるように設計されているassembly:assemblyに似ており、ビルド ライフサイクル フェーズにバインドすることはできません。

  • プラグインをライフサイクルにバインドする必要がある場合は、アグリゲーター アノテーションを削除して、この記事に従ってください。アイデアは、maven が現在実行されているプロジェクトのプロパティを調べることです。

于 2013-03-04T11:30:44.653 に答える