親プロジェクト(pom)で集中的に定義されているプロファイルを親モジュールに適用しないで、サブモジュール(一部のみ)に適用するプロファイルを作成する場合は、ここで提案されたアプローチです:
は、親のポンポンでサンプル1を、プロファイルを定義します。私たちがやっていること
<profiles>
<profile>
<id>sample-profile</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<id>print-hello</id>
<phase>${phase.prop}</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<echo message="hello there!" />
</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
注:
- プラグイン
phase
要素は、パラですプラグインのビルド段階へのバインディングもパラメータ化されます
- このプラグインの実行をフェーズに接続するプロパティを決定することができます
- このプラグインの実行をフェーズなしまたは空相)
ので、同じ親のポンポンで、のプロパティを定義してみましょう:このよう
<properties>
<phase.prop>none</phase.prop>
</properties>
、親ポンポン上で実行されているビルドはnone
(無相にプラグインの実行を添付しますキーウォーではないdまたは既知の値、現存していないフェーズで使用された事実上のスタンダードのみを空にしたり、好きな値を入れても同じ効果があります。宣言されたすべてのモジュールでは、デフォルトでスキップされます。プロファイルはすべてのモジュールで引き続き有効ですが、デフォルトではプラグインを実行しないため、無害です。
その後、あなたはプラグインの実行は、あなたが唯一の懸念プロパティと必要な位相再定義することができ、アクティブにしたいモジュール内:
<properties>
<phase.prop>package</phase.prop>
</properties>
メインのビルドからプロファイルを活性化
(親を)
mvn clean install -Psample-profile
親は、すべてのモジュールに適用されますが、phase.prop
値は達人、意味のある値を有する場合に有効なプロファイルの実行にのみ発生します。
異なるプラグインの実行に異なるフェーズが必要な場合は、複数のプロパティを定義して同じパターンを適用できます。
Mavenですでに実行されているプラグイン(パッケージングとデフォルトビルドの一部)のグローバルプラグイン設定がない場合は、default execution idをオーバーライドしてその実行を再定義することができます。
我々はskip
の構成要素を使用して同じことを行っている可能性注意、しかし:
- は、すべてのプラグインが
phase
要素を使用してskip
構成エントリ
- を提供していないがどのような構成に関連していないとすることができ同じフェーズに関連付けられた実行のために再利用
[親プロファイルからの子プロファイルの有効化]の可能な複製(http://stackoverflow.com/questions/35304770/activating-a-child-親プロフィールからのプロフィール) –
@Aと同意します。DiMatteo。リンクされた質問がこれに答えます。 – Tunaki
私の編集をご覧ください。 – JDC