Java 如何使用概要文件禁用Maven安装和部署阶段?

Java 如何使用概要文件禁用Maven安装和部署阶段?,java,maven-2,build,Java,Maven 2,Build,我的Maven项目包含3个不同的概要文件:dev、stage和prod,它们包含不同的配置设置。我希望这样,如果活动概要文件不是prod,那么安装和部署阶段就不能执行(或者执行但不执行任何操作),从而使开发和阶段构建不在repo中。有办法做到这一点吗 我猜这涉及到将添加到dev和stage概要文件,并手动将其绑定到“无”阶段或类似的阶段。如果这是您真正想要做的,那么只需在dev和staging上运行“包”阶段,并且在您的maven设置文件中,提供的用户不应该具有对存储库的写入权限 不过,我建议您

我的Maven项目包含3个不同的概要文件:dev、stage和prod,它们包含不同的配置设置。我希望这样,如果活动概要文件不是prod,那么安装和部署阶段就不能执行(或者执行但不执行任何操作),从而使开发和阶段构建不在repo中。有办法做到这一点吗


我猜这涉及到将添加到dev和stage概要文件,并手动将其绑定到“无”阶段或类似的阶段。

如果这是您真正想要做的,那么只需在dev和staging上运行“包”阶段,并且在您的maven设置文件中,提供的用户不应该具有对存储库的写入权限

不过,我建议您将配置文件保留在构建工件之外,这样您就只有一个在不同环境之间升级的构建。作为部署生成的脚本的一部分,您可以自动复制正确的设置,从而获得类似的效果。

无论您是否希望这样做是最好的主意,您可以使用验证配置文件属性是否设置为“prod”配置文件的值。插件默认绑定到
验证
阶段,因此您需要将其绑定到
阶段,否则只有“prod”配置文件可用

我将使用的具体配方如下:

有一个名为
requireProperty
的内置规则,可用于对属性及其值进行断言。您可以从prod配置文件中设置属性,然后(在任何配置文件之外)配置enforcer插件以检查所述属性是否设置为您期望的值。然而,这是霍基


我强烈建议您将特定于环境的配置值外部化为属性占位符,并仅使用配置文件来设置这些值,而不是关闭特定于环境的配置文件或影响您正在生成的工件的内容

事实上,我只是使用配置文件来设置占位符。每个概要文件定义一个$env变量。然后在父POM中设置了一个过滤器,引用过滤器-${env}.properties。因此,所有配置信息都集中在这些文件中,每个环境一个。但是,这并不能阻止有人进行mvn-Pdev部署,并用dev配置的工件污染repo,这正是我试图解决的问题。那么,你能将我的建议用于你的env变量吗?是的,我想我能,正在修复。从长远来看,我同意我需要找到一种不那么烦人的方法来实现这一点,但这将帮助我完成冲刺。谢谢最后,我只是将enforcer插件添加到我不想使用AlwaysFail规则安装或部署的配置文件中,并给出了一条很好的消息来解释事情。谢谢你的帮助!