2017-01-18 1 views
1

Проект находится в Groovy/Grails/Gradle/Camel МаршрутыYAML - groovy - env ​​var не может быть целым числом?

Это кажется довольно разумным:

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) 

Строка Env вары не имеют проблему и работать просто хорошо. Я не могу найти какой-либо синтаксис, чтобы сделать трансляцию в int при поиске.

Любые мысли?

+0

Что фактическое значение '$ PORT'? Вы уверены, что можете просто ввести envvar в свой yml config? Ошибка заключается в том, что строка «$ {PORT}» не является целым числом, которое является истинным. – sebnukem

+0

Я использую intellij, и я установил PORT в 8081 в переменные среды, когда редактирую конфигурацию запуска под Grails. Да, я могу вводить другие vars, если они являются строками с использованием шаблона $ {}. Есть ли лучший образец? –

+0

Это действительный YAML (т. Е. Вы ** можете ** иметь неуказанный строковый скаляр '$ {PORT}' без каких-либо проблем), поэтому удалил неадекватный тег. – Anthon

ответ

0

В приложении Grails/Spring загрузки, если конфигурация короткая рука, как показано ниже:

server: 
    port: ${PORT} 

то приложение ожидает --PORT=8090 (например), подлежащей предоставлению в качестве свойства системы ARG/окружающей среды при запуске приложения , Убедитесь, что указана переменная среды.

Для того, чтобы значение переменной окружения, доступные в application.yml мы также должны были бы ниже конфигурации задачи в Grails приложений:

bootRun { 
    systemProperties = System.properties 
} 

С равнине ваниль Spring Загрузочный Maven приложений выше не требуется.

Кроме того, чтобы избежать каких-либо исключения, мы можем также обеспечить значение по умолчанию для порта, если это возможно, как показано ниже:

server: 
    port: ${PORT:8085} 
+0

java.lang.NumberFormatException: для строки ввода: «$ {PORT: 8443}« Я получаю ту же ошибку. Он не будет читать его как нечто, что он должен интерпретировать, что нечетно, потому что у меня есть много других, установленных в файле, используя тот же шаблон. Но все они являются строковыми значениями. Также добавление 'bootRun { systemProperties = System.properties}' ничего не меняет –

Смежные вопросы