Внедрить свойства Gradle в Spring Boot application.yml, не работающий в IntelliJ IDEA

Мне удалось внедрить Gradle proj.ver в application.yml и после этого ввести его в служебное приложение. Мой application.yml выглядит так:

project: 
  version: ${version}

Но это работает, только если я запустил приложение из cli с:

gradle bootRun

Если я пытаюсь запустить приложение из IntelliJ, оно не сработало и не удалось:

Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'version' in value "${version}"

Я прочитал все ответы из Stackoverflow, и они предложили два решения:

  1. Используйте пружинные профили

  2. Измените конфигурацию запуска и запустите перед запуском задачи gradle: processResources

Я бы предпочел что-то вроде значения По умолчанию для proj.ver, когда я запускаю из IntelliJ. Это возможно? Или есть какие-нибудь лучшие решения для этой ситуации? Спасибо

${version:default} должен предоставить вам значение по умолчанию, если он не найден.
M. Deinum 01.05.2018 14:10

Спасибо за ответ, но, как я написал в ответе, похоже, что только эта работа работает с обеих сторон: ${version?:unknown}

brebDev 01.05.2018 16:26

В этом нет необходимости, поскольку это выражение значения, а не выражение SpEL. Если это каким-то образом не проанализировано gradle (что, вероятно, и есть), который выполняет замену.

M. Deinum 02.05.2018 07:48

вы можете сказать, как вы вводите свойства Gradle в application.yaml?

ykembayev 13.04.2020 14:47

Да, конечно, я обновил ответ. Вы можете узнать, как это сделать. Надеюсь, поможет.

brebDev 13.04.2020 15:17
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Версия Java на основе версии загрузки
Версия Java на основе версии загрузки
Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
1
5
1 518
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как сказал М. Дейнум выше в комментарии, мне удалось запустить приложение из IntelliJ, но теперь gradle bootRun начал давать сбой:

Caused by: groovy.lang.MissingPropertyException: No such property: unknown for class: SimpleTemplateScript2

После еще нескольких исследований выяснилось, что ${version?:unknown} (со знаком вопроса) работает либо из IDE, либо из cli.


Я обновил ответ, чтобы другие знали, как добавить информацию о сборке Gradle в Spring-boot:

1) Скажите Gradle передать данные сборки в файл Spring yml следующим образом:

processResources {
filesMatching('appInfo.yml') {
    expand(project.properties)
}}

2) appInfo.yml будет выглядеть так:

project:
  version: ${version?:unknown}

3) Вставьте версию сборки в службы Spring, например:

@Value("${project.version}")
private String applicationVersion;

Другие вопросы по теме