web-dev-qa-db-ja.com

プロファイルを使用して、どのMavenモジュールを構築するかを制御する

Maven POM.xmlに次のXMLがあります。

<profiles>
  <profile>
     <id>default</id>
     <activation>
        <activeByDefault>true</activeByDefault>
        <property>
           <name>default</name>
           <value>!disabled</value>
        </property>
     </activation>
     <modules>
        <module>m1</module>
        <module>m2</module>
        <module>m3</module>
     </modules>
  </profile>
  <profile>
     <id>x</id>
     <modules>
        <module>m1</module>
     </modules>
  </profile>
</profiles>

私が達成しようとしているのはこれです:

  1. mvn installを実行すると、m1、m2、およびm3プロジェクトをビルドします。

  2. mvn install -Pxを実行すると、only build m1になります。

私の現在の問題は、上記のコードで、オプション2がすべてのm1、m2、m3をビルドすることです。

33

解決策を見つけて、最初に「x」プロファイルと「デフォルト」を定義すると、正常に機能します(非常識なMaven !!)。最終結果は次のとおりです。

   <profiles>
      <!-- DO NOT CHANGE THE *ORDER* IN WHICH THESE PROFILES ARE DEFINED! -->
      <profile>
         <id>x</id>
         <modules>
            <module>m1</module>
         </modules>
      </profile>
      <profile>
         <id>default</id>
         <activation>
            <activeByDefault>true</activeByDefault>
         </activation>
         <modules>
            <module>m1</module>
            <module>m2</module>
            <module>m3</module>
         </modules>
      </profile>
   </profiles>
44

次のように、コマンドラインからrunByDefaultがtrueに設定されているMavenプロファイルを無効にできます。

mvn install -P !default

注、これにはMavenバージョン2.0.10が必要です。

5
EMMERICH