我们正在使用Spring Boot和相关依赖项从头开发一个新的Web应用程序,并使用Gradle构建。
我们的项目有近5个测试阶段,每个阶段在不同的服务器上执行,因此每个服务器上的配置略有不同。
上面的场景是一种非常常见的情况,通常我在之前的项目中遵循的做法是直接在服务器的类路径下保存“属性”文件,以便可以在多个服务器上部署相同的.war文件具有基于服务器/环境的不同配置。
现在,上述设置的明显缺点是 - 这样的设置无法通过某个版本控制器与其他开发人员轻松共享。而且我不能使用Gradle中“Process Resources”任务的强大功能在构建过程中引入一些动态属性。
现在,如果我在项目设置中提取.properties文件,那么我可以轻松地对其进行版本控制,共享变得更容易,我也可以通过Gradle引入动态属性。缺点是我可能必须在更新.properties文件后准备多个.war文件。
我有两个问题?
谢谢!
答案 0 :(得分:1)
你应该为所有环境构建一场战争。为每个环境设置一个os envvar(ex spring.profile = dev,spring.profile = prod)。
根据该envvar读取正确的属性文件(spring将为您执行此操作)。 Ex application-dev.properties,application-prod.properties
在envvars中存储生产数据库连接密码。
见
http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html