将grails配置为环境变量中的多个属性文件

时间:2012-03-24 22:34:19

标签: grails configuration externalizing

我已经设置了这样的环境变量:

APP_HOME = "c:\app\app-datasource.properties

在config.groovy我做

def ENV_NAME = "APP_HOME"
    if(!grails.config.location || !(grails.config.location instanceof List)) {
    grails.config.location = []
    }
    if(System.getenv(ENV_NAME)) {
    println "Including configuration file specified in environment: " + System.getenv(ENV_NAME);
    grails.config.location << "file:" + System.getenv(ENV_NAME)

    } else if(System.getProperty(ENV_NAME)) {
    println "Including configuration file specified on command line: " + System.getProperty(ENV_NAME);
    grails.config.location << "file:" + System.getProperty(ENV_NAME)

    } else {
    println "No external configuration file defined."
    }

我是通过在线发布的,我想知道我们是否需要使用grails.config.locationgrails.config.locations? 而不是直接将APP_HOME设置为属性文件,我可以将其设置为目录路径(e.g.: c:\apps)然后我可以在该目录中放置多个属性文件,然后如果我多次执行以下操作它会起作用吗?:

    grails.config.locations << "file:" + System.getProperty(ENV_NAME)+ "\app-datasource.properties"
    grails.config.locations << "file:" + System.getProperty(ENV_NAME)+ "\app-reporting.properties"
and so on...

提前致谢

1 个答案:

答案 0 :(得分:1)

您需要修改grails.config.locations(复数)。我的(非常有限的)经验表明,在Config.groovy完成之后,可能不会加载外部文件。

您可能需要考虑在类路径中查找其他配置文件;然后你可以把你的额外的东西放在Grails项目之外(例如,在你的web服务器的库中)或grails-app/conf目录中。我已经写了关于如何执行此操作的说明here

以下是有关如何从插件执行此操作的帖子:https://stackoverflow.com/a/9789506/1269312