Могу ли я использовать профиль Maven, чтобы переключаться между различными значениями application.properties - PullRequest
0 голосов
/ 18 октября 2018

У меня есть application-prod.yml application-dev.yml и application.properties, которые содержат только один строчный код, как показано ниже

spring.profiles.active=dev

для производственной сборки maven, следует использовать spring.profiles.active= prod, то он будет собираться с помощью application-prod.yml, для сборки разработки он должен использовать spring.profiles.active = dev, тогда maven будет использовать для сборки application-dev.yml. Могу ли я использовать другой профиль pom.xml, чтобы сделатьпереключиться на это значение переключиться в Applicaiton.properties?

Ответы [ 4 ]

0 голосов
/ 18 октября 2018
  1. Вам необходимо определить пользовательское свойство в каждом из ваших профилей Maven и установить их значения в соответствии с суффиксами соответствующих файлов свойств, которые вы хотите загрузить с конкретным профилем.

    <profile>
      <id>dev</id>
      <properties>
        <activatedProperties>dev</activatedProperties>
      </properties>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
    </profile>
    <profile>
      <id>release</id>
      <properties>
        <activatedProperties>release</activatedProperties>
      </properties>
    </profile>
    
  2. Далее в разделе сборки того же файла настройте фильтрацию для модуля ресурсов.Это позволит вам вставить свойства, определенные на предыдущем шаге, в любой файл в каталоге ресурсов, который является последующим шагом.

    <build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
    …
    </build>
    
  3. Наконец, добавьте следующую строку в приложение.properties.

    spring.profiles.active=@activatedProperties@
    

Подробнее см. свойства пружинной загрузки для каждого профиля maven

Официальное руководство по загрузке из внешнего конфига Загрузка из внешнего конфига

0 голосов
/ 18 октября 2018

Кажется, что вы ищете "внешнюю конфигурацию".В соответствии с превосходными рекомендациями 12factor лучше не хранить такой конфиг в вашем хранилище кода.

См. соответствующий раздел в руководстве по Spring Boot, чтобыпосмотреть, какие варианты у вас есть (а их много).Суть в том, что вы предоставляете файл application.yml/properties в файловой системе, и ваше приложение будет читать его оттуда, а не из пути к классам.

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

0 голосов
/ 18 октября 2018

Если вы хотите, чтобы содержимое файла свойств изменялось во время сборки, вы можете использовать фильтрацию Maven.Фильтрация Maven позволяет заменить заполнитель в файле ваших свойств (или yaml) на значения из свойств Maven.

Предполагается, что в вашем POM есть свойство с именем targetEnv, которое может иметь значение dev илиprod (в зависимости от активного профиля Maven), затем вы можете ссылаться на него в файле свойств (или файле yaml), используя следующий синтаксис:

spring.profiles.active=@targetEnv@

Однако, если вы хотите следовать Spring BootРекомендации, лучше включать и отключать профили Spring с помощью переменных среды в вашей целевой среде.Например, вы можете использовать переменную окружения spring.profiles.active с желаемым значением, и оно заменит значение в вашем файле свойств.

0 голосов
/ 18 октября 2018

Для этого вы можете использовать свойство Maven, сослаться на него в своем файле yml (с ${...}) и отфильтровать ресурс (то есть файл yml) с помощью плагина ресурсов maven.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...