【问题标题】:Grails external config location for deployed war已部署战争的 Grails 外部配置位置
【发布时间】:2014-08-18 16:21:20
【问题描述】:

我有一个在我的开发环境中使用的外部配置文件,用于指定我的 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 中硬编码。我不知道如何让客户修改这些值。我不想为每个客户构建不同的战争文件,其中包含他们的配置文件的位置。

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

【问题讨论】:

  • 你已经有了 ${appName}.config.location 系统属性。

标签: grails configuration


【解决方案1】:

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

// 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",
]

【讨论】:

    猜你喜欢
    • 2018-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多