2012-04-27 5 views
1

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

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

おかげで、 Brで、Stristi

答えて

2

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

プロファイルを環境変数でアクティブ化することはできますが、多くのプロジェクトがあり、プロジェクトごとにプロファイルを適用したい場合は、それぞれのプロジェクトビルドの実行前に環境変数を変更することができます。 IDEで作業している場合は、各プロジェクトのプロパティを設定するように起動設定を構成することができ、プロジェクトごとに連続した統合で正しいmvn runコマンドを設定する必要があります。しかし、それによって、異なるプロファイルによってアクティブ化されるべき異なるプロジェクトからなる集約ビルドを構築することが不可能になります。

可能性のある回避策(エレガントではないようですが、うまくいくと思いますが)は、ファイルの存在に基づいてプロファイルをアクティブにし、必要なものをアクティブにするために、 。たとえば、次のように

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

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

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

+0

私はこの同じハックについて考えていましたが、集約されたビルドの場合の動作とは何かを求めて何を得ているのかはっきりしていませんか? – Lucas

0

は、あなたのMavenのプロファイルにactiveByDefaultタグをシンプル追加することができます。

<profiles> 
    <profile> 
    <id>your-profile</id> 
     <activation> 
     <activeByDefault>true</activeByDefault> 
    </activation> 
    </profile> 
</profiles> 
+0

私が書いたように、あなたが説明したようにこのタグでプロフィールの1つを起動しました。しかし、問題は、異なるプロジェクトに異なるプロファイルをアクティブにするために、プロジェクトのpom.xmlファイルに設定できるかどうかです。 – user1360847

0

私は私のプロジェクトでは、この方法を好む:

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

それからこの方法でそれを有効にすることができます:

mvn your_goal -Denv=dev 

よろしく、

Boskop

0

リポジトリマネージャ(ArchivaArtifactoryNexusアルファベット順)を使用して、settings.xmlファイルに1つの設定を入れる必要があると聞こえます。これにより、ビルドファイル環境が依存する問題が解決されます。

関連する問題