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

Tomcat Grails-无法读取外部化配置值,tomcat,grails,environment-variables,production-environment,Tomcat,Grails,Environment Variables,Production Environment,我正在开发一个grails应用程序。我想将某些配置值外部化,以便在服务器启动时指定它们 在开发中我使用以下命令运行应用程序 grails产品运行应用程序-Dmy.property=“secret” 在运行时我想使用以下代码读取控制器中的值 字符串myVal=System.getProperty(“my.property”) 当我检查myVal的值时,它总是null。我只想能够始终如一地读取我的.value的值,指针是值得赞赏的 注意:我不想在Config.groovy中存储值。我也尝试过Syst

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

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

grails产品运行应用程序-Dmy.property=“secret”

运行时我想使用以下代码读取控制器中的值

字符串myVal=System.getProperty(“my.property”)

当我检查myVal的值时,它总是null。我只想能够始终如一地读取我的.value的值,指针是值得赞赏的

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


我也提到了。

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

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”


要在外部配置文件更改期间动态重新加载配置,您可以查看此插件:

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

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

这不起作用,通常命令行参数大多是顺序无关的。你能告诉我一个资源,你在那里看到了订购等问题吗?ThxI需要能够部署单个war文件,而不是每次值更改都重新编译..根据您的建议-似乎我需要重新编译?如果我的假设不正确,请告诉我。Thx在我的回答中添加了一个动态加载配置的链接。您应该查看[此处][1][1]:
grails -Dmy.property="secret" prod run-app