java - Git 或外部项目中的属性文件?

标签 java spring git deployment properties

我们正在开发一个基于 Spring 的 Web 应用程序,需要部署在各种环境中:

1)开发本地机器以开发新功能\修复错误等。

2) QA Env#1 - 供 QA 团队测试我们的版本

3) QA Env#2 - 供 QA 团队测试我们的版本

4) QA Env#3 - 供 QA 团队测试我们的版本

5) 生产

现在,这些环境之一的每个部署都需要填写一个属性文件,该文件包含许多参数:

1) tomcat ips

2)mysql IP

3) 蒙戈IP

4) 负载均衡器ip

5) ehcache多播端口和地址。

6)还有很多很多

我们的问题是:

这个属性文件应该在哪里定义?在我们的代码库中? (git,在每个环境的文件夹中?)在我们的 webapp 项目之外(这样,每个环境都应该使用正确的属性文件更新一次,然后部署就直接进行,根本不需要配置)?

请记住,我们正在开发一台构建\部署机器,它将自动将我们的项目部署到所有这些环境,因此在决定处理此问题的正确方法时需要记住这一点。

最佳答案

一般来说,我不会将属性文件保存在存储库中,即使我们正在讨论私有(private)文件。我想到的一些原因是:

  • 不需要版本控制。我个人认为保留部署或 QA 属性文件的版本历史记录没有意义。

  • 客户隐私。您可能不希望与有权访问存储库的所有人员(开发人员、QA 团队等)共享部署配置。

  • 防止错误。错误总会发生。开发人员错误地对部署QA属性文件进行一些更改可能会给您的构建/部署链带来一些严重的问题。

您可以做的就是向存储库添加一些属性文件模板,其中包含应用程序的默认配置(例如本地开发人员配置)。< br/> 然后,您可以为不同的环境提供不同的属性文件,并仅在相关团队内分发这些属性文件(QA 配置到 QA 团队,部署配置用于已部署的系统)。

您的构建\部署计算机很可能有权访问所有不同的属性文件,并且可以根据目标环境检索正确的属性文件。使用这样的配置,将这些文件保留在存储库中并没有任何好处,将它们存储在有权更改它们的人员和构建\部署计算机可用的位置就足够了。

关于java - Git 或外部项目中的属性文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31313077/

相关文章:

java - 如何在 Java Sound API 中重新启动播放音频?

Spring Data REST - 如何同时保存父实体和子实体

java - Derby 嵌入式数据库不持久

git - 为什么在 merge pull 请求时需要将开发分支 merge 到功能分支?

git - 使用 GitHub Actions 自动更新 repo 的子模块

windows - 在 Windows 上使用 Hudson 的 Git 插件克隆/获取存储库时出现问题

java - Spring boot Jdbctemplate 返回指定格式的输出

java - Flushable.flush() 的一般行为是阻塞直到操作完成吗?

java - 无法设置无人机: NoClassDefFoundError: com/opera/core/systems/OperaDriver

java - 使用 Spring-Boot 创建一个简单的 JAR 而不是可执行的 JAR