2011-10-17 4 views
36

私はマルチファンプロジェクト(男の子、私はの方法をこのサイトに何度も書き込んでいます)を持っています。ほとんどのモジュール(つまり、コードを持つモジュール)は、コードカバレッジなどのレポートを生成するためにmaven-site-pluginを実行する必要があります。これらは詳細な共有構成を持っています。Mavenマルチモジュールプロジェクトでは、1人の子供のプラグインをどのように無効にすることができますか?

しかし、パッケージを扱ういくつかのモジュール - アセンブリプラグインを実行してtarballなどを生成します。これらはサイトレポートの実行から何も得られません。分析するコード、報告するテストはありません。

だから私は、共有プラグインの設定、および好ましくはすべて、プラグインを実行にする必要はない、いくつかのモジュールに必要なモジュールの多くを持っています。親POMの<build>セクションにプラグインを置くと前者の設定(共有設定)ができますが、この場合はプラグインをオフにすることができません。各モジュール自身のPOMに設定をプッシュすると、後者(プラグインの実行を避ける)を行うことができますが、この場合は構成情報を共有するための良い方法を見つけることができません。

子供のモジュールによっては無効になることがあるプラグインのために、共有設定が可能ですか?もしそうなら、どうですか?

答えて

61

「プラグインを実行する」とは、プラグインがライフサイクルフェーズにバインドされていることを意味しています。一部のモジュールでバインドを解除したいとします。まず、POMの継承を変更して、プラグインを必要としないモジュールが1つの親と、異なる親を持つモジュールを持つようにすることができます。そうしたくない場合は、子モジュールの実行フェーズを明示的に「無」に設定することができます。例えば。あなたは、このような親ポンポンの設定があった場合:子モジュールで次に

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>exec-maven-plugin</artifactId> 
    <version>1.2.1</version> 
    <executions> 
     <execution> 
      <id>i-do-something</id> 
      <phase>initialize</phase> 
      <goals> 
       <goal>exec</goal> 
      </goals> 
      <configuration> 
       ... lots of configuration 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

を、あなたがこれを行うことができます:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>exec-maven-plugin</artifactId> 
    <version>1.2.1</version> 
    <executions> 
     <execution> 
      <id>i-do-something</id> 
      <phase/> 
     </execution> 
    </executions> 
</plugin> 

を、それは同じプラグインと同じ実行IDですので、設定を無効にします親に指定されているので、プラグインは子プロジェクトのフェーズにバインドされていません。

+1

私はそれがそれのようなものであることを知っていましたが、私はまだ黄色のベルトです(私の最近の歴史のMavenの質問の道から推測しなかった場合)。私は[this](http://stackoverflow.com/questions/7589931/how-should-i-share-maven-depdendencymanagement-from-multiple-sources)のためにプロジェクトを別の親に移すことはできませんが、私はレポートプラグインのバインドを解除します。ありがとう! – Coderer

+4

この方法は、親モジュールのプラグインに ''が指定されていないと機能しません。 – EvgeniySharapov

+5

@evgeniysharapovこの場合、子モジュールではまだ 'なし 'を使用できます。[この回答](http://stackoverflow.com/a/14653088/1155724)を参照してください。 –

1

親pomで抑制したい実行にidというタグが付いている場合は、Ryan Stewartの答えが働きます。しかし、親のpomがidで実行をタグ付けしていない場合(もちろん、その親のpomを編集することはできません)、次のようにすると親のpomの動作が抑制されます。

  1. まず、別の実行を作成し、それをidを与え、あなたはそれが何をする必要があるか、それでやるnone
  2. に、実行の段階を設定します。
  3. mvn help:effective-pomを実行して、必要なものが親のpomから抑制されていることを正しく確認していることを確認してください。

はここに例を示します

<plugin> 
     <artifactId>maven-source-plugin</artifactId> 
     <version>2.1.2</version> 
     <executions> 
     <execution> 
      <phase>package</phase> 
      <goals> 
      <goal>jar</goal> 
      </goals> 
     </execution> 
     </executions> 
     <inherited>true</inherited> 
    </plugin> 

私はjar-no-forkに目標を変更するために必要な: これは私の親ポンポンのように見えた方法です。親pomでの実行には、無効にするために使用できるidが含まれていないことに注意してください。これは効果的な-ポンポンがどのように見えるかで結果

  <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-source-plugin</artifactId> 
       <executions> 
        <execution> 
         <phase>none</phase> 
        </execution> 
        <execution> 
         <id>attach-sources</id> 
         <goals> 
          <goal>jar-no-fork</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 

:だからここに私の子供のPOMに追加何

 <plugin> 
     <artifactId>maven-source-plugin</artifactId> 
     <version>2.2.1</version> 
     <executions> 
      <execution> 
      <phase>none</phase> 
      <goals> 
       <goal>jar</goal> 
      </goals> 
      <configuration> 
       <archive> 
       <compress>false</compress> 
       </archive> 
      </configuration> 
      </execution> 
      <execution> 
      <id>attach-sources</id> 
      <goals> 
       <goal>jar-no-fork</goal> 
      </goals> 
      <configuration> 
       <archive> 
       <compress>false</compress> 
       </archive> 
      </configuration> 
      </execution> 
     </executions> 
     <inherited>true</inherited> 
     <configuration> 
      <archive> 
      <compress>false</compress> 
      </archive> 
     </configuration> 
     </plugin> 

これがゴールjarが実行されず、唯一の目標jar-no-fork実行決してことを保証 - これは私が達成したかったものです。

関連する問題