grails - 无法使用Grails 3.2.9在命令行上传递系统属性

标签 grails groovy grails-3.0

我正在尝试使用-Dproperty=value语法将系统属性传递给Grails,但似乎无法正常工作。这是我的设置:

build.gradle:

bootRun {

     addResources = true
     systemProperties = System.properties 
 }

application.yml:
server:
  port: '${server_port}'

命令行:
grails -Dserver_port=8180 run-app

当我尝试运行该应用程序时,得到以下信息:
java.lang.NumberFormatException: 
For input string: "${server_port}"

文档here建议采用这种方法,但显然$ {server_port}表达式不会替换为-D选项传递的值。

谁能弄清楚是什么引起了这种现象?

另外,在有人问之前。.是的,我知道--port命令行开关。这样做的目的不是专门传递服务器端口,尽管我希望与其他脚本保持一致。但是除此之外,我还计划使用-Doption = value在运行时传递其他设置,因此我确实需要此功能。

最佳答案

问题出在application.yml文件中。这一点:

server:
   port: ${server.port}

实际上需要嵌套在grails元素下,如下所示:
grails:
  server:
    port: ${server.port}

这样做时,效果很好。请注意,您实际上根本不需要执行此操作,因为如果您具有用于通过系统属性传递的bootRun设置,则仅设置-Dserver.port=WHATEVER本身即可起作用。或者,您可以使用--port。我对此的兴趣实际上是确保一般通过系统属性,因为我需要为应用程序设置一些其他属性。我只是以此为实验。

关于grails - 无法使用Grails 3.2.9在命令行上传递系统属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51681658/

相关文章:

groovy - 消息未使用 JSR223 和 groovy 在 jmeter 的控制台上打印

testing - 如何检查是否在 geb 中找到 href 元素

grails - 如何在本地完全运行Grails?

grails - 如何设置 grails 3 应用程序以使用根上下文路径?

grails - @TestMixin(HibernateTestMixin)不起作用Grails 3

grails - Grails: 'size'属性不适用于<gui:autoComplete>

grails - Grails多对多关系无法按预期工作

spring - 使用 GORM 6.1.x 在 Grails 3.3 中确定 Springs bean 实例化顺序

grails - 升级到:Grails 3.3.2,设置服务器URL

groovy - 在 ArrayList 上与 groovy 对象相交