2016-01-20 23 views
5

プラグインの目標をコマンドラインから実行したいが、プラグインを複数回実行したい。このためには、私のPOMは、次のようになります。私がやりたい何Maven:コマンドラインからの実行と複数の実行の設定

<plugin> 
    <groupId>xxx.yyy</groupId> 
    <artifactId>zzz</artifactId> 
    <version>1.1.6</version> 
    <executions> 
     <execution> 
      <id>default-cli-1</id> 
      <goals> 
       <goal>mygoal</goal> 
      </goals> 
      <configuration> 
       .... config1 .... 
      </configuration> 
     </execution> 
     <execution> 
      <id>default-cli-2</id> 
      <goals> 
       <goal>mygoal</goal> 
      </goals> 
      <configuration> 
       .... config2 .... 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

のようなものです:

mvn xxx.yyy.zzz:mygoal 

、それはその後、2つの実行を実行します。しかし、私はどのように把握することはできません。

コマンドラインから実行するときに<id>を使用することはできません。それはdefault-cliのためのものです。しかし、<id><executions>の中でユニークでなければなりません。つまり、私はdefault-cliを1つだけexecutionに置くことができます。

メイブン版3.0.5

答えて

5

あなたは@executionId追加のオプションを使用して、Mavenの上3.3.1this新機能から始まるコマンドラインからゴール(およびその実行を)実行することができます。

Mavenと実行IDについては、this SO questionも確認できます。 Mavenの3.3.1


あなたの代わりに、通常は害(validateなど)と、以下のようなものを持っていない相への2つの実行バインドできます。そして、実行

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <version>2.5</version> 
    <executions> 
     <execution> 
      <id>execution-1</id> 
      <phase>validate</phase> 
      <goals> 
       <goal>jar</goal> 
      </goals> 
      <configuration> 
       <classifier>something1</classifier> 
      </configuration> 
     </execution> 
     <execution> 
      <id>execution-2</id> 
      <phase>validate</phase> 
      <goals> 
       <goal>jar</goal> 
      </goals> 
      <configuration> 
       <classifier>something2</classifier> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

を:

mvn validate 

同じプラグインの同じ目標を2回実行すると、無害な段階。

デフォルト(理解しやすい)ことで、この相の一部としてそれらを持ってしたくない場合は、プロファイルに移動し、実行の一部としてそれをアクティブにすることができます:完全性については

mvn validate -PpluginGoalExecution 

、プロファイルは次のようになります。

<profile> 
    <id>pluginExecution</id> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-jar-plugin</artifactId> 
       <version>2.5</version> 
       <executions> 
        <execution> 
         <id>execution1</id> 
         <phase>validate</phase> 
         <goals> 
          <goal>jar</goal> 
         </goals> 
         <configuration> 
          <classifier>something1</classifier> 
         </configuration> 
        </execution> 
        <execution> 
         <id>execution2</id> 
         <phase>validate</phase> 
         <goals> 
          <goal>jar</goal> 
         </goals> 
         <configuration> 
          <classifier>something2</classifier> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
</profile> 

そして、それは言うまでもない:プロファイルのidが、この場合、どのプラグインについてはかなり自明であるべきで、それが実際に実行することになるの目標(つまり、の目的でありますプロフィール、通常通り)。

更新
ただ、化粧ていますが、要素の上にプロファイリングのビルドに追加することができます。だから、あなたが唯一の次のMavenコマンド(プロファイルだけ活性化)を実行する必要があること

<defaultGoal>validate</defaultGoal> 

mvn -PpluginGoalExecution 

これで、検証フェーズと構成済みのプラグインの実行が自動的に実行されます。大きな変化ではありませんが(私が言ったように、美容的ですが)、プラグインのゴール実行に近いかもしれません。

+0

ありがとうございました。それは良い答えです。残念ながら私はまだMaven 3.0.5にいます。 – peterh

+0

もしあなたがMaven 3.0.5を使っているなら、それは不可能です... 'mvn -PXXX1 ...'で有効にできるプロファイルを介してのみ可能です... – khmarbaise

+0

@peterh ok私はそれに応じて私の答えを更新します、それはあなたの価値があるかもしれません –

関連する問題