在我的Config.groovy中,我按以下方式合并属性文件:
grails.config.locations << "file:${userHome}/environment.properties" << "file:${userHome}/passwords.properties"
我有两个问题:
有人可以解释这些问题吗?
答案 0 :(得分:2)
我所做的是拥有一个外部Config.groovy文件,例如:MyConfig.groovy
在标准grails Config.groovy文件的末尾,我有以下内容:
def ENV_NAME = "MY_EXTERNAL_CONFIG"
if(!grails.config.locations || !(grails.config.locations instanceof List)) {
grails.config.locations = []
}
if(System.getenv(ENV_NAME)) {
grails.config.locations << "file:" + System.getenv(ENV_NAME)
} else if(System.getProperty(ENV_NAME)) {
grails.config.locations << "file:" + System.getProperty(ENV_NAME)
} else {
println "No external Configs found."
}
所以现在你可以在生产环境中的任何地方(例如)拥有一个MyConfig.groovy文件,然后在启动tomcat之前将环境系统变量设置为指向该文件(或将其作为参数传递给startup.sh):
MY_EXTERNAL_CONFIG="/home/tomcat/configs/MyConfig.groovy"
export MY_EXTERNAL_CONFIG
就是这样。现在您有一个外部MyConfig.groovy文件。其中的属性可以从您的grails应用程序访问,因为它们是标准Config.groovy
的一部分import org.codehaus.groovy.grails.commons.*
//...
ConfigurationHolder.config.foo.bar.hello
答案 1 :(得分:0)
尝试这个怎么样!(只是一个猜测,它应该没有任何区别!但请试一试,让我知道如果不起作用!)
grails.config.locations = [ "file:${userHome}/environment.properties",
"file:${userHome}/passwords.properties" ]