2

Java や Flex などのさまざまなテクノロジーを使用したモジュールを使用したマルチモジュール ビルドがあります。現在コンパイルされているモジュールに基づいて、さまざまなプロファイルをアクティブにすることは何とか可能ですか?

のようなアクティベーションで試しました

<profile>
  <id>flex</id>
  <activation>
    <file>
      <exists>${basedir}/src/main/flex</exists>
    </file>
  </activation>
  ...
</profile

${basedir} の使用はMaven のドキュメントに記載されていますが、うまくいきませんでした(これは Maven のバグです)。現在のモジュールに基づいて異なるアクティベーションを行う可能性はありますか? または、Maven はすべてのモジュールのプロファイルをアクティブにすることのみを許可するか、またはまったく許可しないのですか?

4

6 に答える 6

2

2.2.1 では、プロファイルは継承されますが、${basedir} の問題は依然として存在します。私は同じボートに乗っています-特定のプロジェクト内のファイルの存在に基づいてプロファイルをアクティブにする必要があります。子ビルドは個別に正常に実行されます (ローカル ファイルの存在によってアクティブ化された継承されたプロファイル) が、最上位の親からビルドを実行すると、ファイルが見つからないために失敗します。

于 2010-03-16T19:18:51.310 に答える
2

この質問を読んで答えを探している私のような人にとって、このユースケースは Maven 3 で機能するようになりました。

3 の初期バージョン ( http://jira.codehaus.org/browse/MNG-2363を参照) にはこの機能に影響するバグがありましたが、Maven 3.0.4 を使用して正しく動作します。

于 2012-08-01T10:00:46.797 に答える
0

ファイルベースのアクティベーションに関しては、${basedir} を削除してみてください。次のように使用します。

<activation>
   <file>
      <missing>target/jboss/conf/jboss-service.xml</missing>
   </file>
</activation>
于 2009-08-10T10:54:27.257 に答える
0

これが役立つかどうかはわかりませんが、次のアプローチで同様の問題を解決しました。

  1. 親POMにプロファイルを作成して記述しましたactiveByDefault=false. PluginManagement-Section には、さまざまなプラグインの構成が含まれています。
  2. 子供たちはこのプロファイルを再利用でき、activeByDefault=true これを設定するとプロファイルがアクティブになりますが、まだどのプラグインもアクティブ化されていません。
  3. しかし幸いなことに、説明されているプラ​​グイン構成が利用可能です。Plugins-Section で定義することにより、子で再利用できます。group- と artifactID をinherited=true指定し、子で再利用するプラグインごとに設定するだけです。

それが役立つことを願っています。コード スニペットを含めなくて申し訳ありませんが、それでも解決策が理解できることを願っています。

于 2014-05-12T13:22:34.407 に答える
-2

プロファイルを使用する各モジュールでプロパティを設定し、プロファイルで「プロパティ」アクティベーションを使用できます。

于 2009-06-19T19:11:03.293 に答える