用于部署战争的Grails外部配置位置

时间:2014-06-27 14:05:16

标签: grails configuration

我有一个外部配置文件,我在开发环境中使用它来指定我的grails应用程序的数据源。我使用以下行在config.groovy中导入外部文件:

   grails.config.locations = ["classpath:${appName}-config.groovy",
                           "file:./${appName}-config.groovy"]
if (System.properties["${appName}.config.location"]) {
    println("found")
   grails.config.locations << "file:" + System.properties["${appName}.config.location"]
}

这可以正常运作。但是,当应用程序部署为war文件时,我遇到了问题。如上所述,config.groovy中硬编码配置文件所在的位置。我的要求是允许客户指定自己的配置文件的位置。

我坚持这一点,因为在构建war文件之前,config.groovy中的位置是硬编码的。我不知道如何让客户修改这些价值观。我不想为每个包含其配置文件位置的客户构建不同的war文件。

有没有改变这些值的方法?或者也许是合理的,我有一个硬编码值,所有客户都应该放置他们的配置文件?我有兴趣看看是否有人有任何建议?

1 个答案:

答案 0 :(得分:0)

我有下一个工作配置。所以,它可能对你有用。

// This condition may be rewrited in the Groovy style
final configbase = System.properties.'aaaaa.configbase' ? System.properties.'aaaaa.configbase':"${userHome}/.aaaaa/"
grails.config.locations = [
        // Standart Grails config
        "classpath:${appName}-config.properties",
        "classpath:${appName}-config.groovy",

        // Redhat Openshift
        "file:${userHome}/app-root/data/.aaaaa/${appName}-config.properties",
        "file:${userHome}/app-root/data/.aaaaa/${appName}-config.groovy",

        // Based on System property -Daaaaa.configbase
        "file:${configbase}/${appName}-config.properties",
        "file:${configbase}/${appName}-config.groovy",
]