如何在maven-release-plugin的执行目标期间关闭配置文件

时间:2014-01-15 13:46:16

标签: maven-3 maven-release-plugin maven-profiles

在正常开发期间,我有一个需要执行的构建功能。在发布期间,构建函数需要替换为等效版本(在本例中为Proguarding而不是复制)。

我原以为我可以使用2个配置文件,一个DevelopmentProfile和一个ReleaseProfile,使用DevelopmentProfile activeByDefault。

例如

<profiles>
    <profile>
        <id>DevelopmentProfile</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <developmentBuild>true</developmentBuild>
            <releaseBuild>false</releaseBuild>
        </properties>
    </profile>
    <profile>
        <id>ReleaseProfile</id>
        <properties>
            <developmentBuild>false</developmentBuild>
            <releaseBuild>true</releaseBuild>
        </properties>
    </profile>
</profiles>

通过release-plugin releaseProfiles属性打开ReleaseProfile,通过releaseProfiles属性关闭ReleaseProfile

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-release-plugin</artifactId>
    <configuration>
        <releaseProfiles>ReleaseProfile,!DevelopmentProfile</releaseProfiles>
    </configuration>
</plugin>

考虑到“停用配置文件”http://maven.apache.org/guides/introduction/introduction-to-profiles.html以及release-plugin的源代码只是使用提供的字符串构建配置文件,这看起来很可行。

但它似乎不起作用。我怀疑是因为release-plugin会预先设置活动配置文件,这可能会覆盖配置文件停用。

无论如何。有没有其他方法可以在发布期间停用配置文件。或者确保这两个配置文件中只有一个在任何时候都处于活动状态。

我对涉及我传入系统属性以明确激活配置文件的解决方案不感兴趣,因为它们不够强大,无法承受这里的工作负载。

1 个答案:

答案 0 :(得分:1)

好的,我上面所做的一切都是100%现货。 如上所述,您绝对可以在发布期间停用个人资料。

它不适用于我的原因是因为显示的release-plugin配置已在子pom中指定,而父pom要么重载了releaseProfiles的值,要么完全控制了它。

因此,将我的配置移动到父级会使一切正常。