Автор оригинала: Priyesh Mashelkar.
1. Введение
Как правило, конфигурация сборки нашего проекта содержит довольно много информации о нашем приложении. Часть этой информации может потребоваться в самом приложении. Таким образом, вместо жесткого кода этой информации, мы можем использовать ее из существующей конфигурации сборки.
В этой статье мы увидим как использовать информацию из конфигурации сборки проекта в приложении Spring Boot.
2. Информация о сборке
Допустим, мы хотим отобразить описание приложения и версию на главной странице нашего сайта.
Как правило, эта информация присутствует в пом.xml :
4.0.0 spring-boot spring-boot war This is simple boot application for Spring boot actuator test 0.0.1-SNAPSHOT ...
3. Ссылка на информацию в файле свойств приложений
Теперь, чтобы использовать вышеупомятую информацию в нашем приложении, мы должны сначала со ссылкой на нее в одном из наших файлов свойств приложения:
Здесь мы использовали значение свойства сборки project.description установить свойство приложения приложение-описание . Аналогичным образом, приложение-версия устанавливается с использованием project.version .
Наиболее значительным битом здесь является использование @ символа вокруг имени свойства. Это говорит Весна расширить названное свойство от проекта Maven.
Теперь, когда мы построим наш проект, эти свойства будут заменены на их значения из пом.xml .
Это расширение также называется фильтрацией ресурсов. Стоит отметить, что этот вид фильтрации применяется только к производственной конфигурации . Следовательно, мы не можем использовать свойства сборки в файлах, src/test/ресурсы .
Еще одна вещь, чтобы отметить, что если мы используем addResources флаг, весна-загрузка:бегите цель добавляет src/main/resources непосредственно к классной тропе. Хотя это полезно для целей горячей перезагрузки, оно обходит фильтрацию ресурсов и, следовательно, эту функцию.
Теперь, вышеупомянутое расширение собственности работает нестандартно только в том случае, если мы используем весна-загрузка-стартер-родитель .
3.1. Расширение свойств без пружины-загрузки-стартер-родитель
Давайте посмотрим, как мы можем включить эту функцию без использования весна-загрузка-стартер-родитель зависимость.
Во-первых, мы должны включить фильтрацию ресурсов внутри
src/main/resources true
Здесь мы включили фильтрацию ресурсов под src/main/resources только.
Затем мы можем добавить конфигурацию делимитатора для maven-ресурсы-плагин :
org.apache.maven.plugins maven-resources-plugin @ false
Обратите внимание, что мы указали использоватьDefaultДелимитеры собственности в ложные . Это гарантирует, что стандартные заполнители Spring, такие как $-placeholder, не будут расширены сборкой.
4. Использование информации о сборке в файлах YAML
Если мы используем YAML для хранения свойств приложений, мы, возможно, не сможем использовать @ указать свойства сборки . Это потому, @ является зарезервированным персонажем в YAML.
Но мы можем преодолеть это с помощью настройка другого делимитатора в maven-ресурсы-плагин :
org.apache.maven.plugins maven-resources-plugin ^ false
Или, просто переопределение resource.delimiter недвижимость в свойствах блокирует нашего пом.xml :
^
Тогда мы можем использовать ^ в нашем файле YAML:
application-description: ^project.description^ application-version: ^project.version^
5. Заключение
В этой статье мы увидели, как мы можем использовать информацию о проекте Maven в нашем приложении. Это поможет нам избежать жесткого кодирования информации, которая уже присутствует в конфигурации сборки проекта в файлах свойств приложений.
И, конечно, код, который сопровождает этот учебник можно найти более на GitHub .