Grails YAML-groovy-env-var可以';不是整数吗?
项目采用Groovy/Grails/Gradle/Camel路线 这似乎很合理: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
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}
不会改变任何东西