我想添加外部配置数据。所以我在主Config.groovy
文件中添加了以下行。
我导出了环境变量
DASH_CONFIG=<path_to_external_configfile>/extConfig.properties
extConfig.properties
simpleBSMDash.default.serverName = "test.it.com"
simpleBSMDash.default.refreshInterval = "5"
Config.groovy中
if(System.getenv('DASH_CONFIG')) {
println( "Including configuration file: " + System.getenv('DASH_CONFIG'));
grails.config.locations = [
"classpath:exthConfig.properties",
"file:./extConfig.properties",
"file:${System.getenv('DASH_CONFIG')}"]
} else {
println "No external configuration file defined."
}
BootStrap.groovy中
我在Boostrap.groovy中初始化了一些配置参数。例如
import org.codehaus.groovy.grails.commons.ConfigurationHolder
new AdminSettings(
refreshInterval:"${ConfigurationHolder.config.simpleBSMDash.default.refreshInterval}", serverName:"${ConfigurationHolder.config.simpleBSMDash.default.serverName}").save(failOnError:true)
通过以下方式在本地运行应用:grails -Denv=DEV run-app
。一切正常,我们会创建intance AdminSettings并使用预期值进行初始化。
当我在tomcat服务器上部署war文件时,intance AdminSettings没有被实例化。然而我做了导出环境变量
DASH_CONFIG=<path_to_external_configfile>/extConfig.properties.
我将extConfig.properties
文件放在$TOMCAT_HOME/lib
文件夹中,但它也没有用。
我将其重命名为extConfig.groovy
,它也没有帮助。
我搜索了stackflow,但没有找到正确的答案。
有没有人有想法?
答案 0 :(得分:0)
这对我们有用:
在conf / Config.groovy中:
grails.config.locations = [
"classpath:${appName}.properties",
"file:${userHome}/.grails/${appName}-config.properties"
]
它适用于Windows,虽然Groovy / Windows认为是家(〜)的地方可能有点令人惊讶。您尝试从Config.groovy访问环境变量看起来有点冒险......