在maven中跨配置文件共享通用配置

时间:2017-02-15 14:14:44

标签: java maven maven-profiles

我们的项目有一个父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。这里的插件配置不能移出配置文件,因为当且仅当四个配置文件中的一个被激活时,它必须被包括在内。

在这里,我可以将paramCommonbuild标记的其余部分移动到另一个包含paramProfX的个人资料中作为属性,并将paramProfX通过其他个人资料传递为属性。但是,在这种情况下,我可能需要同时激活两个我不想做的配置文件,因为只激活四个配置文件中的一个将不会做任何事情,因此会产生误导。

如果我想一次只激活一个配置文件,那么实现此目的的最佳方法是什么?

0 个答案:

没有答案