java – 特定于环境的构建与特定于加载环境的属性

构建的一个选项是在构建时打包特定于环境的属性(例如,使用maven配置文件)

另一种选择是在生产环境中设置-Denv = production,并在启动时加载/${env}/config.properties. (春天允许这样,但它可以手动完成)

我用过这两个.前者意味着没有额外的环境配置.后者允许在多个环境中使用相同的构建.

问题:任何其他重要的利弊,或几乎相同的方法将被选择?

相关:Load environment-specific properties for use with PropertyPlaceholderConfigurer?

最佳答案
在我看来,每个环境有不同的输出是一个主要的缺点,因为这意味着你需要构建应用程序的N个副本,运行相同的构建命令N次等.很容易遇到错误,你给了“开发”版本到QA网站等

我喜欢它之间的第三个选项 – 将配置值存储在服务器本身,与应用程序分开,然后编写应用程序以了解在哪里可以找到这些配置文件或者您有某种排序通过使用外部文件中的规范值替换其配置文件中的标记来“重新配置”应用程序的脚本.

这样,您可以为所有环境提供相同的二进制文件,并且可以轻松地将外部配置置于源代码管理下(例如,每个环境一个文件),以便可以审核更改,可以自动传播更改等.

如果您在开发人员与“操作”应用程序或负责不同环境的组分开的大型组织中工作,这也是一个方便的选择 – 因为使用此方法,开发人员可以知道要配置什么,但另一个group负责在每台主机上提供的配置值.

转载注明原文:java – 特定于环境的构建与特定于加载环境的属性 - 代码日志