プロジェクトでrpm-mavenプラグインを設定する作業をしています。私たちのステージング環境と本番環境では、ビルドはRed Hatボックスで行われますが、開発とテストに使用されるWindowsボックスがいくつかあるので、RPMビルドプロセスを、 rpmbuildがインストールされました。
これがアクティベーション条件での最初の試みでした。
<activation>
<os>
<family>unix</family>
</os>
<file>
<exists>/usr/bin/rpmbuild</exists>
</file>
</activation>
私の最初のテストでは、Windowsボックスでの構築とCentOSボックスでの構築のみが行われ、どちらも期待どおりの結果が得られました。その後、rpmbuildを利用できないLinuxマシンでビルドが失敗しました。このような2つの条件がサポートされていないようです。これは事実ですか?たぶん<os/>
要素を追加して、必要な結果を取得しますが、将来の参照のために、複数のアクティブ化条件でプロファイルを作成するより良い方法はありますか?
Maven <activation>
ブロックはOR
のリストです-最初の基準が満たされるとすぐにプロファイルがアクティブになります。したがって、少なくともこのバグレポートが修正されるまで、問題が解決する可能性は低くなります https://issues.Apache.org/jira/browse/MNG-4565
3.2.2で修正されました– sfussenegger(コメント経由)
そして最悪の場合、ここで説明されているように、たとえばファイル、jdk、プロパティなど、さまざまなタイプの条件を混在させることができますhttp://www.sonatype.com/books/mvnref-book/reference/ profiles-sect-activation.htmlですが、同じタイプの2つの条件、たとえば2つのプロパティを配置することもできません
<activation>
<property>
<name>integrationTest</name>
</property>
<property>
<name>packaging</name>
<value>swf</value>
</property>
</activation>
これは1つだけでは機能しません<property>
タグが許可されます。関連するJIRA: https://issues.Apache.org/jira/browse/MNG-3328
そして、上記のバグはまだオープンです... 5年間それは残念です!
私だけで修正しました:)
3.2.2以降、期待どおりに機能します。複数の条件がANDで結合されます
リファレンス- https://github.com/Apache/maven/commits/master 、MNG-4565
で検索
コミットURL- https://github.com/Apache/maven/commit/c6529932f9e3efdfc86ed73f59a307a8f8b6ea5f
これは、これらのMaven拡張機能が行うことだと思います。
これはかなりシンプルです source を見てください
これには 実際のアクティベーション式のその他のオプション (Scalaを含む)があります。
ただし、これは拡張機能(プラグインではない)であるため、それを使用するすべてのプロジェクトで拡張機能を登録する必要があります。また、プロジェクトの作成者がそれを放棄し、将来のMavenバージョンでは機能しないリスクがあります。