Я пытаюсь загрузить свойства из pom.xml в application.properties. Я хочу создать два профиля: dev и prod, чтобы использовать разные URL-адреса базы данных. Я использую Jenkins в качестве CI, во всех моих приложениях (в основном Spring MVC, без проекта Boot) используются профили maven для развертывания в Tomcat. Есть ли возможность сделать это с помощью свойств maven? Я пробовал что-то подобное: spring.datasource.url=${jdbc.url}
Использование свойств Maven в application.properties в Spring Boot
Ответы (3)
Прежде чем это сделать, рассмотрите возможность экстернализации файла свойств из развертываемого пакета. Таким образом, вы можете развернуть одну и ту же компиляцию в любой среде. Это избавит вашего Дженкинса от работы, которая на самом деле не нужна. Лучше всего создать приложение только один раз, однако, если вы не уверены, вот как это сделать.
В своем pom.xml определите профили с соответствующими значениями свойства.
<profile> <id>dev</id> <properties> <jdbc.url>your_dev_URL</jdbc.url> </properties> </profile>
Настройте подключаемый модуль Maven Resources для фильтрации каталога, содержащего ваше приложение .properties.
<build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> ... </build>
Если вы используете Spring Boot 1.3 или более поздней версии, вы должны знать, что во избежание конфликтов между заполнителями Spring Boot и токенами, отфильтрованными плагином Maven Resources, в структуре введены решение, требующее использования другого синтаксиса для отфильтрованных значений.
Теперь вместо
${property.key}
вы должны использовать@property.key@
. В этом случае ваш application.properties должен содержать следующий образец, чтобы он работал должным образом:[email protected]@
Вы также можете проверить сообщение о разделении файлов свойств Spring для разных профилей Maven. Таким образом вы извлечете значения из вашего pom.xml.
-P
при вызове сборки. Вы не обязаны использовать activeByDefault
.
- person Daniel Olszewski; 05.12.2017
url '@jdbc.url@'
.
- person Valentin Grégoire; 23.05.2019
Помимо Даниэля Ольшевского, в моем файле yml я получил ошибку: (Не используйте @ для отступа)
Поэтому я исправил это, добавив одинарные кавычки. Кто-то может счесть это полезным.
spring:
datasource:
url: '@jdbc.url@'
Конечно, есть. Просто используйте Maven Filtering над своим приложением. properties, и Maven запишет в него значения вашего профиля.
Однако вы должны понимать, что в то время как профили Maven работают во время пакета / сборки приложения, профили Spring Boot работают во время выполнения. Другими словами, с профилями Maven вы получите неизменяемые сборки для конкретных профилей, а при использовании сборок из Spring Boot вы сможете изменять конфигурацию приложения каждый раз перед его запуском или даже во время его работы.
См. также: