20

別のmavenプラグインの実行の前後で、mavenプラグインを囲む実行順序をプラグインに作成したいと思います。3つの実行はすべて、デプロイフェーズの一部です。

これが私がやりたいことの例です:

  • フェーズ:デプロイ
  • url:get:execution-before
  • 依存関係:解凍
  • url:get:execution-after

注:url:getは私自身のcusto mojoであり、commonshttpClientを使用してhttpgetを実行するだけです。

私は通常、プラグインの実行後を次のフェーズでアタッチしますが、残念ながら、デプロイはjarライフサイクルの最後のフェーズです。

前もって感謝します、

コスタス


注:pomファイルの次のプラグインセグメントは、予期しない次の実行順序を作成します。

  • フェーズ:デプロイ
  • url:get:execution-before
  • url:get:execution-after
  • 依存関係:解凍

プラグインセグメント:

        <plugin>
            <groupId>com.blabla.stpadmin</groupId>
            <artifactId>maven-url-plugin</artifactId>
            <version>1.0-SNAPSHOT</version>
            <executions>
                <execution>
                    <id>stop-stpadmin-service</id>
                    <phase>deploy</phase>
                    <goals>
                        <goal>get</goal>
                    </goals>
                    <configuration>
        ...
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
                <execution>
                    <id>unpack</id>
                    <phase>deploy</phase>
                    <goals>
                        <goal>unpack</goal>
                    </goals>
                    <configuration>
        ...
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>com.blabla.stpadmin</groupId>
            <artifactId>maven-url-plugin</artifactId>
            <version>1.0-SNAPSHOT</version>
            <executions>
                <execution>
                    <id>start-stpadmin-service</id>
                    <phase>deploy</phase>
                    <goals>
                        <goal>get</goal>
                    </goals>
                    <configuration>
        ...
                    </configuration>
                </execution>
            </executions>
        </plugin>
4

1 に答える 1

16

各プラグインの実行を同じフェーズにバインドすることができ、指定した順序で実行されます。これらはデプロイ目標の実行後に実行されるため、前のフェーズ(インストール)にバインドすることをお勧めします。

更新:依存関係プラグインの実行の前後で実行実行後の目標が実行されるようにするには、それらが別々のプラグインで定義されていることを確認する必要があります。それ以外の場合、2つの構成はマージされ、順番に実行されます。

2つの実行を同じプラグインで定義する必要がある場合は、カスタムライフサイクルを定義し、実行アノテーションを介してMojoが実行される前にそのライフサイクルを呼び出すことでこれを行うことができます。この回答では、カスタムライフサイクルを作成し、プラグインを実行する前に強制的に呼び出す方法について説明しました。依存関係プラグインを呼び出すようにexecute-afterゴールを構成すると、必要な実行順序が得られます(そのライフサイクルでexecute-beforeゴールを呼び出すこともできます)。

以下の例では、デプロイフェーズ中に3つのプラグインを順番に実行します。

  <plugin>
    <groupId>custom.url.plugin</groupId>
    <artifactId>maven-url-plugin</artifactId>
    <version>1.0</version>
    <executions>
      <execution>
        <phase>deploy</phase>
        <goals>
          <goal>execution-before</goal>
        </goals>
      </execution>
    </executions>
  </plugin>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.1</version>
    <executions>
      <execution>
        <phase>deploy</phase>
        <goals>
          <goal>unpack</goal>
        </goals>
      </execution>
    </executions>
  </plugin>
  <plugin>
    <groupId>custom.url.plugin</groupId>
    <!--specify final execution in a different plugin to 
           avoid the configurations being merged-->
    <artifactId>maven-url-2-plugin</artifactId>
    <version>1.0</version>
    <executions>
      <execution>
        <phase>deploy</phase>
        <goals>
          <goal>execution-after</goal>
        </goals>
      </execution>
    </executions>
  </plugin>
于 2009-09-23T17:44:48.277 に答える