適切なプラグイン バージョンをロードするために、ユーザーが親 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 プロファイルをアクティブにすることをお勧めしますか?