1

私はたくさんのMavenプロジェクトを持っています。マージする必要がある2つの異なるグローバルsettings.xmlがあります。どちらも、プロファイル内のリポジトリについて説明しています。2つのsettings.xmlをmirrorsタグとprofilesタグでマージしました。プロファイルの1つは、settings.xmlファイルのactiveProfileタグによってアクティブ化されます。

さまざまなプロジェクトでアクティブなプロファイルを変更するにはどうすればよいですか?プロジェクトのpom.xmlファイルで選択できますか?

ありがとう、Br、Stristi

4

4 に答える 4

2

このドキュメントでは、プロファイルをアクティブ化する方法について説明します:ビルドプロファイルの概要

環境変数を介してプロファイルをアクティブ化することもできますが、プロジェクトが多数あり、プロジェクトごとにプロファイルを適用する場合は、個別のプロジェクトビルドを実行する前に環境変数を変更するのは失敗の解決策です。IDEを使用している場合は、起動構成を構成して各プロジェクトのプロパティを設定できます。また、各プロジェクトの継続的インテグレーション内で正しいmvnrunコマンドを構成する必要があります。ただし、それでは、異なるプロファイルによってアクティブ化する必要がある異なるプロジェクトで構成される集約ビルドをビルドすることは不可能になります。

考えられる回避策(エレガントではないようですが、うまくいくと確信しています)は、ファイルの存在に基づいてプロファイルをアクティブ化し、さまざまなプロジェクトのそのような「マーカーファイル」を管理して必要なものをアクティブ化することです。例えば:

<profiles>
  <profile>
    <activation>
      <file>
        <exists>.profile-A</exists>
      </file>
    </activation>
    ...
  </profile>
</profiles>

予想される動作:このプロファイルは、「。profile-A」という名前のファイルがプロジェクトのルートフォルダーに存在する場合にアクティブになります。

ただし、この時点でもう1つ興味深い質問が発生します。それは、集約ビルドの場合の動作はどうなるでしょうか。

于 2012-04-27T11:28:48.173 に答える
0

activeByDefaultMavenプロファイルにタグを追加するだけです。

<profiles>
    <profile>
    <id>your-profile</id>
        <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
    </profile>
</profiles>
于 2012-04-27T11:10:09.643 に答える
0

私は私のプロジェクトでこの方法を好みます:

<profile>
  <id>dev</id>
  <activation>
    <property>
      <name>env</name>
      <value>dev</value>
    </property>
  </activation>
  ...
</profile>

次に、次の方法でアクティブ化できます。

mvn your_goal -Denv=dev

よろしく、

ボスコップ

于 2012-04-27T11:12:29.610 に答える
0

settings.xmlファイルに単一の構成を含めるには、リポジトリマネージャー(ArchivaArtifactoryNexusのアルファベット順)を使用する必要があるようです。これにより、ビルドファイル環境を依存させる問題が解決されます。

于 2012-04-27T11:55:47.500 に答える