40

pom.xml次のよう に、にプロファイルを設定しました。

<profile>
<id><em>profileId1</em></id>
    <build>
        <filters>
            <filter>src/main/filters/<em>profileId1</em>.properties</filter>
        </filters>
// rest of the profile 
</profile>
<profile>
<id><em>profileId2</em></id>
    <build>
        <filters>
            <filter>src/main/filters/<em>profileId2</em>.properties</filter>
        </filters>
// rest of the profile
</profile>

質問:

すべてのプロファイルからこの部分を抽出して、プロファイルごとに繰り返す必要がないようにする方法はありますか?

4

3 に答える 3

39

Maven 2.2.1以降では、次を使用して最初のアクティブなプロファイルのIDを取得できました。

${project.activeProfiles[0].id}

もちろん、アクティブなプロファイルが少なくとも1つない場合、これは失敗します。

を使用して

${project.profiles[0].id}

パスカルが提案したように、私にはうまくいきませでした。

ヒント:これを調査している間、私は本当に好きになり始めましたmvn help:evaluate

于 2011-04-28T16:47:49.220 に答える
3

PLXUTILS-37によると、「Reflection Properties」を使用して List または Map のプロパティにアクセスできるはずです (詳細については、MavenPropertiesGuideを参照してください)。

${project.profiles[0].id}、、${project.profiles[1].id}などを試してみてください。

これが機能しない場合 (機能するかどうかは確認しませんでした)、システム プロパティに基づいてプロファイル アクティベーションを使用します。そんな感じ:

<profile>  
  <id>profile-profileId1</id>  
  <activation>
    <property>
      <name>profile</name>
      <value>profileId1</value>
    </property>
  </activation>
  <build>  
    <filters>  
      <filter>src/main/filters/${profile}.properties</filter>  
    </filters>  
    // rest of the profile  
</profile>

このプロファイルを有効にするには、コマンド ラインで次のように入力します。

mvn groupId:artifactId:goal -Dprofile=profileId1 
于 2010-01-06T11:05:29.543 に答える