在正常开发期间,我有一个需要执行的构建功能。在发布期间,构建函数需要替换为等效版本(在本例中为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会预先设置活动配置文件,这可能会覆盖配置文件停用。
无论如何。有没有其他方法可以在发布期间停用配置文件。或者确保这两个配置文件中只有一个在任何时候都处于活动状态。
我对涉及我传入系统属性以明确激活配置文件的解决方案不感兴趣,因为它们不够强大,无法承受这里的工作负载。
答案 0 :(得分:1)
好的,我上面所做的一切都是100%现货。 如上所述,您绝对可以在发布期间停用个人资料。
它不适用于我的原因是因为显示的release-plugin配置已在子pom中指定,而父pom要么重载了releaseProfiles的值,要么完全控制了它。
因此,将我的配置移动到父级会使一切正常。