40

プロジェクトで実行したい 2 つの一般的なプラグイン駆動のタスクがあります。pluginMangementそれらは共通であるため、それらの構成を共有親 POMのセクションに移動したいと考えています。ただし、2 つのタスクは両方とも、それ以外は完全に異なりますが、同じプラグインを使用します。私のプロジェクトのいくつかでは、2 つのタスクのうちの 1 つだけを実行したいと考えています (常にプラグインのすべての実行を実行したいとは限りません)。

親 pomのセクション内でプラグインの複数の異なる実行を指定し、pluginManagement実際に実行するそれらの実行の 1 つ (および 1 つだけ) を子 pom で選択する方法はありますか? で 2 つの実行を構成pluginManagementすると、両方の実行が実行されるようです。

注: これは質問Maven2 - problem with pluginManagement and parent-child relationshipの複製である場合とそうでない場合があると思いますが、質問はほぼ 4 画面分の長さ (TL;DR) であるため、簡潔な複製が価値がある場合があります。

4

1 に答える 1

63

その通りです。デフォルトでは、Maven には構成したすべての実行が含まれます。これが私が以前にその状況に対処した方法です。

<pluginManagement>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>some-maven-plugin</artifactId>
    <version>1.0</version>
    <executions>
      <execution>
        <id>first-execution</id>
        <phase>none</phase>
        <goals>
           <goal>some-goal</goal>
        </goals>
        <configuration>
          <!-- plugin config to share -->
        </configuration>
      </execution>
      <execution>
        <id>second-execution</id>
        <phase>none</phase>
        <goals>
           <goal>other-goal</goal>
        </goals>
        <configuration>
          <!-- plugin config to share -->
        </configuration>
      </execution>
    </executions>
  </plugin>
</pluginManagement>

実行は phase にバインドされていることに注意してくださいnone。子では、次のように実行する必要がある部分を有効にします。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>some-maven-plugin</artifactId>
    <executions>
      <execution>
        <id>first-execution</id>         <!-- be sure to use ID from parent -->
        <phase>prepare-package</phase>   <!-- whatever phase is desired -->
      </execution>
      <!-- enable other executions here - or don't -->
    </executions>
</plugin>

子が実行をフェーズに明示的にバインドしない場合、実行されません。これにより、必要な実行を選択できます。

于 2013-05-14T13:35:57.737 に答える