POMに2つのプロファイルを追加することで、デフォルトでsource-jarsプラグインを有効にするという実際の目標を達成できます。あなたはactivation
セクションに要素<activeByDefault>true</activeByDefault>
を追加し、同じPOM内の別のプロファイルが以前に記載された方法
のいずれかを使用して活性化されていない限り、すべてのビルドのために
このプロファイルが自動的にアクティブになると述べていることができMaven profiles documentationノート
したがって、関連するプラグインを含むactiveByDefault
のプロファイルと、コマンドラインの-P
などの任意の標準的な方法でアクティブ化できるプロファイルの2つのプロファイルを追加できますプロファイルは実行中です。あなたのpom.xml
(またはMavenの設定や何でも)でprofiles
セクションでは、したがって、次のようになります。
<profile>
<id>source-jars</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
...
</plugin>
</plugins>
</build>
</profile>
<profile>
<!-- active this profile to disable the source-jars plugin -->
<id>no-optional-plugins</id>
</profile>
残念ながら、私はこの方法では、複数のプラグインを制御するためにうまくスケール作るための方法を見ることができない - 私はあなたが必要だと思いますO(n^2)
プラグインのプロファイルはn
ですが、この単純なケースでは正常に動作するはずです。
のMaven≥2.0.10のもう一つの可能性のシンプルなオプションは、ちょうど上記(まだactiveByDefault
)からsource-jars
プロファイルを持つことである、とmanually deactivate the profileにあなたは-P
CLIフラグの後-
または!
とプロファイルIDを付けることによってたいとき:
$ mvn -P !source-jars
この方法では、複数のプラグインで同じ問題が発生することはありませんが、システムプロパティ、環境変数、JDKバージョンなどで無効にすることはできないため、柔軟性に欠けます。
私たちのpomsは、maven-source-pluginがデフォルトで実行される場所に書かれていますので、あなたの提案どおりに再構成する必要があります。 –
多くの場合、プラグインはデフォルトでオンになっていることが望ましく、プロファイルを使用して無効にすることができます。私はこの答えが解決せずに問題を回避すると思います。 – Kevin
@Mowgliしかし、Mavenプロファイルシステムは、それにはあまり適していません。「非アクティブ化」メカニズムではなく、「アクティベーション」メカニズムだけがあります。一部のプラグインでは、独自の非アクティブ化メカニズムを構築することでこれを処理します(たとえば、確実プラグインの場合はskipTests)。 –