具有多个环境的Grails外部配置(数据源)

Gor*_*rky 4 configuration grails external

在我的Config.groovyi线:

grails.config.locations = [ "classpath:app-config.properties"]
Run Code Online (Sandbox Code Playgroud)

我在哪里设置数据源的定义.文件看起来像:

dataSource.url=jdbc:mysql://host/instance
dataSource.username=u
dataSource.password=p
Run Code Online (Sandbox Code Playgroud)

并正确地替换属性DataSource.groovy.

问题是它取代了每个环境的配置,但我需要为开发,测试和生产单独配置.试图将不同的条目存入文件,例如:

environments.development.dataSource.url=jdbc:mysql://host/dev
...
environments.production.dataSource.url=jdbc:mysql://host/prod
...
Run Code Online (Sandbox Code Playgroud)

以中定义的默认数据源属性结束DataSource.groovy.如何使一个属性文件适用于不同的环境?

小智 8

有几种可能的方法.这是一对夫妇:

  1. 将当前环境名称嵌入外部配置文件名中:

    grails.config.locations = [ "classpath:app-${grails.util.Environment.current.name}-config.properties"]

    这将导致app-development-config.properties在开发模式,app-test-config.properties测试等中加载.

  2. 使用.groovy配置格式而不是.properties.使用.groovy配置文件,您可以使用该environment { ... }块.

  • 谢谢!你的回答带我到这篇文章:http://johnrellis.blogspot.com/2010/11/grails-quick-tip-external-configs.html我使用混合解决方案(用于生产的外部文件和用于开发和测试的本机配置). (2认同)