Grails YAML-groovy-env-var可以';不是整数吗?

Grails YAML-groovy-env-var可以';不是整数吗?,grails,Grails,项目采用Groovy/Grails/Gradle/Camel路线 这似乎很合理: server: port: ${PORT} 但我得到: java.lang.NumberFormatException: For input string: "${PORT}" at org.grails.config.CodeGenConfig.convertToType(CodeGenConfig.groovy:191) at org.grails.config.CodeGenCo

项目采用Groovy/Grails/Gradle/Camel路线

这似乎很合理:

server:
    port: ${PORT}  
但我得到:

java.lang.NumberFormatException: For input string: "${PORT}"
    at org.grails.config.CodeGenConfig.convertToType(CodeGenConfig.groovy:191)
    at org.grails.config.CodeGenConfig.getProperty(CodeGenConfig.groovy:264)
    at grails.config.ConfigMap$getProperty.call(Unknown Source)
    at run-app.run(run-app.groovy:31)
    at org.grails.cli.profile.commands.script.GroovyScriptCommand.handle(GroovyScriptCommand.groovy:152)
    at org.grails.cli.profile.AbstractProfile.handleCommand(AbstractProfile.groovy:452)
    at org.grails.cli.GrailsCli.handleCommand(GrailsCli.groovy:373)
    at org.grails.cli.GrailsCli$_handleCommandWithCancellationSupport_closure6.doCall(GrailsCli.groovy:464)
    at org.grails.cli.GrailsCli$_handleCommandWithCancellationSupport_closure6.call(GrailsCli.groovy)
字符串环境变量没有问题,可以正常工作。 在搜索时,我找不到任何语法将强制转换为int


有什么想法吗?

在Grails/Spring启动应用程序中,如果配置为以下简称:

server:
    port: ${PORT}
然后,应用程序希望在应用程序启动时将
--PORT=8090
(例如)作为系统arg/environment属性提供。确保提供了环境变量

要使环境变量值在
application.yml
中可用,我们还需要Grails应用程序中的以下任务配置:

bootRun {
    systemProperties = System.properties
}
对于普通的Spring Boot Maven应用程序,不需要上述应用程序

此外,为了避免任何类型的异常,如果可行,我们还可以为端口提供默认值,如下所示:

server:
    port: ${PORT:8085}

$PORT
的实际值是多少?您确定可以在yml配置中简单地插入一个envvar吗?错误似乎是字符串“${PORT}”不是整数,这是真的。我正在使用intellij,在Grails下编辑运行配置时,我在环境变量中将PORT设置为8081。是的,我可以使用${}模式注入其他变量,只要它们是字符串。。。。是否有更好的模式?这是有效的YAML(即,您可以有一个无引号的字符串scalar
${PORT}
),因此删除了不适当的标记。切换到groovy script.java.lang.NumberFormatException:对于输入字符串:“${PORT:8443}”,我得到了相同的错误。它不会将其作为必须解释的内容读入,这很奇怪,因为我在文件中设置了大量其他内容,使用完全相同的模式。但它们都是字符串值。另外,添加
bootRun{systemProperties=System.properties}
不会改变任何东西