web-dev-qa-db-ja.com

Maven-プロジェクトのプロパティに基づいてプロファイルをアクティブ化します

こんにちは私はこのようなことを達成しようとしています:

親のpomで、私は持っています

<profile>
  <activation>
    <property>
      <name>Compile</name>
      <value>${project.artifactId}</value>
    ...

そのため、親pomの下でmvn -DCompile=mod1 installを実行すると、プロファイル設定はモジュール1にのみ適用され、他の設定は適用されません。

同様に、私が持っている場合

<profile>
  <activation>
    <property>
      <name>Compile</name>
      <value>${project.packaging}</value>
    ...

次に、親pomの下でmvn -DCompile=war installを実行すると、プロファイル設定はwarとしてパックされるものにのみ適用され、jarやpomには適用されません。

試しましたが、期待どおりに動作しませんでした。私は何かを逃しましたか?助けてください。

P.S.私はこの方法にのみ興味があるので、回避策を提案する必要はありません。その場合、理由があって不可能であると単純に答えてください。ありがとうございました

11
user1589188

それ以来、動作しません...

はじめに:

そして、なぜそれが親から子供まで機能しないのか:

  • 親POMのプロパティは、子POMが画像に表示される前に展開されます。

多くの人があなたの前にここに行って失敗しました。

あなたが本当に何をしようとしているのか不思議に思うかもしれません。同じソースプロジェクトから異なるアーティファクトを構築していますか?おそらく、物事を処理するためにさらにいくつかのMavenモジュールが必要です。

13
Sander Verhagen

はい、env変数などの1つまたはさまざまなパラメータに応じてプロファイルをアクティブ化できます。

<project>
    ...
    <profiles>
        <profile>
            <id>development</id>
            <activation>
                <property>
                    <name>!environment.type</name>
                </property>
            </activation>
        </profile>
    </profiles>
</project>

Xに応じて、アセンブリプラグインを使用して魔法をかけることができるものとは異なるパッケージを作成しようとしている場合は、 http://maven.Apache.org/plugins/maven-Assembly-plugin/

アクティベーションプロパティの詳細

9
Mite Mitreski

Maven 3.0以降、POMのプロファイルは、settings.xmlのアクティブなプロファイルのプロパティに基づいてアクティブ化することもできます。

ここにあるサンプルを確認できます:

http://maven.Apache.org/guides/introduction/introduction-to-profiles.html

2
avianey