11

ではmaven、すべてのプロファイルを定義するmodulespom.xml、それらで定義されたモジュールが集約されます: (関連部分のみ)

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

a を実行する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"

よろしく!

せだの

4

3 に答える 3

15

不可能です。プロファイル構成は常にメイン構成とマージされるため、ケースにのみモジュールを追加できます。

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

于 2012-05-21T10:47:41.080 に答える
14

質問は古いものですが、Google は依然として高いランク付けを行っているため、新しい回答を追加することは理にかなっています。

プロパティ トリックの不在によるアクティブ化を使用して、目的を達成できます。

<profiles>
        <!-- By default, include the modules -->
        <profile>
            <id>full-build</id>
            <activation>
                <!-- Activation by absence of a property. Run normally, without -Dskip-modules -->
                <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>
于 2015-06-07T23:09:29.547 に答える
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 をどのように設定するかだけです。これにより、多かれ少なかれ任意の組み合わせを作成できます。

于 2012-05-21T10:49:56.667 に答える