2013-03-13 33 views
4

在我Config.groovy我把線:Grails的外部配置(數據源)多種環境

grails.config.locations = [ "classpath:app-config.properties"] 

在哪裏設置定義數據源。文件看起來像:

dataSource.url=jdbc:mysql://host/instance 
dataSource.username=u 
dataSource.password=p 

它正確地替換DataSource.groovy的屬性。

問題是它取代了每個環境的配置,但我需要爲dev,test和production單獨配置。試圖投入文件等不同項:

environments.development.dataSource.url=jdbc:mysql://host/dev 
... 
environments.production.dataSource.url=jdbc:mysql://host/prod 
... 

DataSource.groovy定義的默認的數據源屬性結束。如何使一個屬性文件適用於不同的環境?

回答

7

有幾種可能的方法。這裏有幾個:

  1. 嵌入當前環境名稱在外部配置文件名:

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

    這將導致app-development-config.properties在開發模式被加載,app-test-config.properties測試等使用.groovy配置格式代替.properties。使用.groovy配置文件,您可以使用environment { ... }塊。

+1

謝謝!你的答案帶我到這篇文章:http://johnrellis.blogspot.com/2010/11/grails-quick-tip-external-configs.html和我使用混合解決方案(外部文件的生產和原生配置開發和測試)。 – Gorky 2013-03-14 14:43:11