1

適切なプラグイン バージョンをロードするために、ユーザーが親 pom で mvn2 または mvn3 を使用しているかどうかを検出する必要があります。私はここからの推奨事項に従いました:

検出メカニズムはうまく機能しますが、activatedByDefaul である私の他のプロファイルはもう検出されません。

Super pom は以下のようになります。

<profile>
    <id>profile-1</id>
    <activation>
      <activeByDefault>true</activeByDefault>
    </activation>
</profile>
<profile>
    <id>profile-2</id>
    <activation>
      <activeByDefault>false</activeByDefault>
    </activation>
</profile>
   <profile>
      <id>maven-3</id>
      <activation>
         <file>
         <!--  This employs that the basedir expression is only recognized by Maven 3.x (see MNG-2363) -->
            <exists>${basedir}</exists>
        </file> 
      </activation>     
      <build>
         <pluginManagement>
            <plugins>
               <plugin>
                  <groupId>com.company.plugins</groupId>
                      <artifactId>my-super-plugin</artifactId>
                      <version>1.0-123</version>
                    </plugin>
            </plugins>
         </pluginManagement>
      </build>
   </profile>
 </profiles>

mvn help:active-profiles を mvn3 で実行すると --> maven-3 プロファイルのみが一覧表示されます。mvn2 を使用すると、profile-1 が正しくリストされます。

*編集*:結局のところ、実際にはここに十分に文書化されています:http://maven.apache.org/guides/introduction/introduction-to-profiles.html

このプロファイルは、前述の方法のいずれかを使用して同じ POM 内の別のプロファイルがアクティブ化されない限り、すべてのビルドに対して自動的にアクティブになります。デフォルトでアクティブになっているすべてのプロファイルは、POM のプロファイルがコマンド ラインまたはそのアクティブ化構成でアクティブ化されると、自動的に非アクティブ化されます。

私の質問は次のとおりです。デフォルトで profile1 をアクティブにし、-P profile2 の場合はプロファイル 2 をアクティブにし、maven3 を使用する場合は maven-3 プロファイルをアクティブにすることをお勧めしますか?

4

1 に答える 1

0

これまでのところ、次のものよりも優れたものは見つかりませんでした:

<activation>
    <property>
        <name>!dummy</name>
    </property>
</activation>

wheredummyは、確実に使用することのない、ある種のばかげた変数名です。

于 2012-06-12T17:24:11.697 に答える