我正在开发一个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”),但这也不起作用。
答案 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