Grails - 无法读取外部化配置值

时间:2014-06-18 02:19:18

标签: tomcat grails environment-variables production-environment

我正在开发一个grails应用程序。我想外部化某些配置值,因此可以在服务器启动上指定它们。

开发中,我使用以下命令运行应用程序以运行应用程序

  

grails prod run-app -Dmy.property =“secret”

运行时我想使用以下代码

读取控制器中的值
  

String myVal = System.getProperty(“my.property”)

当我检查myVal的值时,它总是 null 。我只是希望能够一致地读取my.value的值,指点赞赏。

注意:我不想在Config.groovy中存储值。我也尝试过System.getenv()。get(“my.property”),但这也不起作用。

我还提到Externalizing Grails Datasource configuration

2 个答案:

答案 0 :(得分:1)

嗯,你指出的博客是正确的。您可以在配置文件中添加以下内容。

if (new File("${userHome}/.${appName}/${appName}-config.groovy").exists()) {
  grails.config.locations = ["file:${userHome}/.${appName}/${appName}-config.groovy"]
  println("loading configuration from: :${grails.config.locations}")
} else {
    println("No external configuration file defined.....")
}

将其添加到config.groovy文件顶部的右侧。您可以将外部配置文件设置如下。

假设我的appname是" test"

/usr/home/myhome/.test/test-config.groovy

要在外部配置文件更改期间动态重新加载配置,您可以查看此插件:http://grails.org/plugin/external-config-reload

答案 1 :(得分:0)

您的问题是参数的顺序。所有“-D”参数都是java参数,因此,如果检查运行后台的java命令,则最后无法识别这些参数。 简而言之,你应该做的是:

grails -Dmy.property="secret" prod run-app