我们的项目有一个父POM,它提供了很多配置。在我们的项目中,如果激活某个配置文件,我们需要提供更多配置。我们目前这样做
<profiles>
<profile>
<id>prof1</id>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>com.somegroupId</groupId>
<artifactId>some-artifact</artifactId>
<configuration>
<someConfig combine.children="append">
<param>paramCommon</param>
<param>paramProf1</param>
</someConfig>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</profile>
<profile>
<id>prof2</id>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>com.somegroupId</groupId>
<artifactId>some-artifact</artifactId>
<configuration>
<someConfig combine.children="append">
<param>paramCommon</param>
<param>paramProf2</param>
</someConfig>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</profile>
<profile>
<id>prof3</id>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>com.somegroupId</groupId>
<artifactId>some-artifact</artifactId>
<configuration>
<someConfig combine.children="append">
<param>paramCommon</param>
<param>paramProf3</param>
</someConfig>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</profile>
<profile>
<id>prof4</id>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>com.somegroupId</groupId>
<artifactId>some-artifact</artifactId>
<configuration>
<someConfig combine.children="append">
<param>paramCommon</param>
<param>paramProf4</param>
</someConfig>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</profile>
</profiles>
这里的问题是我们到处重复整个build
。我想避免这种情况。我想通过一个属性传递paramProfX
。这里的插件配置不能移出配置文件,因为当且仅当四个配置文件中的一个被激活时,它必须被包括在内。
在这里,我可以将paramCommon
和build
标记的其余部分移动到另一个包含paramProfX
的个人资料中作为属性,并将paramProfX
通过其他个人资料传递为属性。但是,在这种情况下,我可能需要同时激活两个我不想做的配置文件,因为只激活四个配置文件中的一个将不会做任何事情,因此会产生误导。
如果我想一次只激活一个配置文件,那么实现此目的的最佳方法是什么?