2012-05-21 4 views
9

をモジュールを上書きすることができ、その中に定義されたモジュールを集約:(関連部分のみ)、あなたは<code>modules</code><code>pom.xml</code>あなたのすべてのプロファイルを定義いったんプロファイルは、(いずれかを含まないように)<code>maven</code>で

<project> 
    <modules> 
     <module>module1</module> 
    </modules> 
    <profiles> 
     <profile> 
      <id>pr1</id> 
      <modules> 
       <moudule>module2</module> 
      </modules> 

mvn cleanを実行すると、コマンドはmodule1に渡されます。

mvn clean -Ppr1を発行すると、module1module2に転送されます。

maven 3にサブモジュールを持つpom.xmlを置き換えてこれを無効にすることができますか?私は、ビルド力のようなものを自分のモジュールを追加の代わりに、プロファイルを実行することを意味:要件は愚かに聞こえるかもしれません

<project> 
    <!-- omitted --> 
    <modules> 
     <!-- modules --> 
    </modules> 
    <build> 
     <!-- build --> 
    </build> 
    <profiles> 
     <profile> 
      <!-- This profile with no modules --> 
     </profile> 
    </profiles> 
</project> 

を、私はちょうどプラグイン構成のようなメカニズムがあるかどうかを知りたいです。

<configuration self.combine="override" 

よろしくお願いいたします。

ssedano

+0

もっと具体的になりますか?私はあなたの質問を全く理解していませんでした。 –

答えて

11

これはできません。プロファイル設定は常にメイン設定とマージされるため、ケースにモジュールを追加するだけです。

代わりに、他のプロファイルが呼び出されずにデフォルトのモジュールのリストが置かれている場合に有効になる何らかの種類の「デフォルト」プロファイル(<activeByDefault>true</activeByDefault><activation>セクション)を作成することです。次に、Mavenビルド呼び出しでプロファイルが指定されていない場合は、この "デフォルト"プロファイルが使用されますが、少なくとも1つのプロファイルを明示的に呼び出すとそうでないため、この方法でモジュールのリストをゼロから定義できます。

+0

@Michael確かに、モジュールを使ってプロファイルを作成して非アクティブにすることができます。あなたはこれを読んだサイトに私を指摘できますか?私はそれを見つけることができませんでした。ありがとうございました! – ssedano

+0

さて、このトリックがどこに記載されているか分かりません。しかし、 ' true'文が使用され、カバーされているMavenの[Build Profilesの紹介](http://maven.apache.org/guides/introduction/introduction-to-profiles.html)を読んでください。モジュールケースで実装してください。厳密にするために、このデフォルトプロファイルを無効にしないでください。他のプロファイルが使用されているときは自動的にアクティブになりません。 –

+0

私はいつもマージすることを意味しました。しかし、この答えは十分です。 – ssedano

0

あなたはこのようなものを行うことができます。

<profiles> 
    <profile> 
     <id>run-xyz</id> 
     <activation> 
     <activeByDefault>true</activeByDefault> 
     </activation> 
     <modules> 
     <module>www-ab</module> 
     <module>www-cd</module> 
     </modules> 
    </profile> 

    <profile> 
     <id>run-its</id> 
     <activation> 
     <activeByDefault>false</activeByDefault> 
     </activation> 
     <modules> 
     <module>www-db</module> 
     <module>www-it</module> 
     </modules> 
    </profile> 
    </profiles> 

あなたがそのようなことについて話している場合。しかし、私はそのようなことについて非常に注意深くすることをお勧めします。

activeByDefaultをどのように設定するかは、単なる質問です。これにより、多かれ少なかれ任意の組み合わせを作成することが可能です。

+2

この構成では、すべてのモジュールが実行されます。これは私が望むものではありません。ありがとうございました! – ssedano

9

質問は古いものの、Googleはまだそれを高く評価しているため、新しい回答を追加することは理にかなっています。

有効にするには、トリックのプロパティが存在しないことでの有効化を使用できます。

<profiles> 
     <!-- By default, include the modules --> 
     <profile> 
      <id>full-build</id> 
      <activation> 
       <!-- Activation by absence of a property. Run normally, without -Dfull-build --> 
       <property> 
        <name>!skip-modules</name> 
       </property> 
      </activation> 
      <modules> 
       <module>module1</module> 
       <module>module2</module> 
       <module>module3</module> 
      </modules> 
     </profile> 

     <!-- No-modules build --> 
     <profile> 
      <id>no-modules</id> 
      <activation> 
       <!-- Activation by a property. Run with -Dskip-modules to activate --> 
       <property> 
        <name>skip-modules</name> 
       </property> 
      </activation> 
      <modules> 
      </modules> 
     </profile> 
    </profiles> 
関連する問題

 関連する問題