我需要检测用户是否在我的父pom中使用mvn2或mvn3才能加载正确的插件版本。我按照这里的建议:http://maven.apache.org/plugins/maven-site-plugin/maven-3.html#Using_maven-site-plugin_2.x_with_Maven_2_and_maven-site-plugin_3.x_with_Maven_3
检测机制效果很好 - 但是,我的其他配置文件被激活后仍然不会被拾取。
超级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 with mvn3 - &gt;只列出了maven-3个人资料。如果我使用mvn2,则正确列出profile-1。
* 编辑* :事实证明,它实际上已在此处详细记录:http://maven.apache.org/guides/introduction/introduction-to-profiles.html
除非使用上述方法之一激活同一POM中的其他配置文件,否则此配置文件将自动为所有版本激活。默认情况下处于活动状态的所有配置文件在命令行上激活POM中的配置文件或通过其激活配置时自动停用。
我现在的问题是:如果-P profile2被激活,你会建议如何激活profile1,激活profile 2,如果使用maven3,则激活maven-3 profile?
答案 0 :(得分:0)
到目前为止,我还没有找到比仅仅更好的东西:
<activation>
<property>
<name>!dummy</name>
</property>
</activation>
其中dummy
是某种你肯定不会使用的愚蠢变量名。