【问题标题】:Grails - Cannot read externalized configuration valuesGrails - 无法读取外部化配置值
【发布时间】:2014-08-08 04:35:13
【问题描述】:

我正在开发一个 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。

【问题讨论】:

标签: tomcat grails environment-variables production-environment


【解决方案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

【讨论】:

  • 我需要能够部署一个单一的战争文件,而不是每次值更改时都重新编译..根据您的建议 - 看来我可能需要再次重新编译?让我知道我的假设是否不正确。谢谢
  • 在我的答案中添加了一个链接,用于动态加载配置。
【解决方案2】:

您的问题在于参数的顺序。所有“-D”参数都是 java 参数,因此,如果您检查运行后台的 java 命令,最后不会识别这些参数。 总之,你应该做的是:

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

【讨论】:

  • 这不起作用,通常命令行参数大多与订单无关。你能指出我看到订购等问题的资源吗?谢谢
猜你喜欢
  • 1970-01-01
  • 2014-08-23
  • 1970-01-01
  • 2016-10-29
  • 2010-11-01
  • 1970-01-01
  • 2014-08-07
  • 2016-06-25
  • 1970-01-01
相关资源
最近更新 更多