My Maven项目包含3个不同的配置文件,dev,stage和prod,它们包含不同的配置设置。我想这样做,以便安装和部署阶段无法执行(或执行但不执行任何操作),如果活动配置文件不是prod,以保持dev和stage构建不在repo中。有没有办法做到这一点?
我猜它涉及添加<插件>到dev和stage配置文件并手动将其绑定到“none”阶段或类似的东西。
答案 0 :(得分:1)
如果那是你真正想做的事情,那么只需在dev和staging上运行“package”阶段,在你的maven设置文件中,提供的用户不应该对存储库具有写权限。
但是,我建议您将配置文件保留在构建工件之外,这样您只能在环境之间升级一个构建。作为部署构建的脚本的一部分,您可以自动复制正确的设置,从而获得类似的效果。
答案 1 :(得分:0)
无论 你想做什么,这都是最好的主意,你可以做的是使用Maven Enforcer Plugin验证profile
属性是否设置为你的'prod'个人资料的价值。该插件默认绑定到validate
阶段,因此您需要将其绑定到package
阶段,或者只有'prod'配置文件可用。
我将使用的具体配方:
有一个名为requireProperty
的内置规则可用于对属性及其值进行断言。您可以从prod配置文件设置属性,然后(在任何配置文件之外)配置enforcer插件以检查所述属性是否设置为您期望的值。然而,这是一个新人。
我强烈建议您将特定于环境的配置值外部化到属性占位符中,并仅使用配置文件来设置这些值,而不是切换特定于环境的配置文件或影响您正在生成的工件的内容。