【问题标题】:Can't pass system property on command line using Grails 3.2.9无法使用 Grails 3.2.9 在命令行上传递系统属性
【发布时间】:2019-01-11 21:07:44
【问题描述】:

我正在尝试使用-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 在运行时传递其他设置,所以我真的需要它来工作。

【问题讨论】:

    标签: grails groovy grails-3.0


    【解决方案1】:

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

    server:
       port: ${server.port}
    

    其实需要嵌套在grails元素下,像这样:

    grails:
      server:
        port: ${server.port}
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-03
      • 1970-01-01
      • 2015-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      相关资源
      最近更新 更多