web-dev-qa-db-ja.com

複数の条件でのMavenプロファイルのアクティブ化

プロジェクトで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/>要素を追加して、必要な結果を取得しますが、将来の参照のために、複数のアクティブ化条件でプロファイルを作成するより良い方法はありますか?

40
bhinks

Maven <activation>ブロックはORのリストです-最初の基準が満たされるとすぐにプロファイルがアクティブになります。したがって、少なくともこのバグレポートが修正されるまで、問題が解決する可能性は低くなります https://issues.Apache.org/jira/browse/MNG-4565


更新:

3.2.2で修正されました– sfussenegger(コメント経由)

42
Nishant

そして最悪の場合、ここで説明されているように、たとえばファイル、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年間それは残念です!

15
Gab

私だけで修正しました:)

3.2.2以降、期待どおりに機能します。複数の条件がANDで結合されます

リファレンス- https://github.com/Apache/maven/commits/masterMNG-4565で検索

コミットURL- https://github.com/Apache/maven/commit/c6529932f9e3efdfc86ed73f59a307a8f8b6ea5f

12
Mysterion

これは、これらのMaven拡張機能が行うことだと思います。

ただし、これは拡張機能(プラグインではない)であるため、それを使用するすべてのプロジェクトで拡張機能を登録する必要があります。また、プロジェクトの作成者がそれを放棄し、将来のMavenバージョンでは機能しないリスクがあります。

0
Ondra Žižka