Рубрики
Без рубрики

Добавление свойств сборки в приложение весенней загрузки

Быстрое и практическое внедрение свойств сборки в приложении Spring Boot.

Автор оригинала: 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. Расширение свойств без пружины-загрузки-стартер-родитель

Давайте посмотрим, как мы можем включить эту функцию без использования весна-загрузка-стартер-родитель зависимость.

Во-первых, мы должны включить фильтрацию ресурсов внутри элемент в нашем пом.xml :


    
        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 .