Maven Изменить значение в файле на основе профиля

У меня есть файл свойств ApplicationResources.properties в моем приложении со свойством, которое меняется в зависимости от среды. Допустим, свойство является:

     resources.location=/home/username/resources

и это значение отличается, когда приложение выполняется во время разработки и когда приложение запускается в производство.

Я знаю, что могу использовать разные профили в Maven для выполнения разных задач сборки в разных средах. Что я хочу сделать, так это каким-то образом заменить значение resources.location в файле свойств на основе используемого профиля Maven. Это вообще возможно?

1 ответ

Решение

Что я хочу сделать, так это каким-то образом заменить значение resources.location в файле свойств на основе используемого профиля Maven. Это вообще возможно?

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

В вашем ApplicationResources.propertiesобъявите токен для замены следующим образом:

resources.location=${your.location}

В вашем POM добавьте <filtering> тег для соответствующего <resource> и установите его в true так:

<project>
  ...
  <build>
    ...
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
      </resource>
      ...
    </resources>
    ...
  </build>
  ...
</project>

Затем добавьте <your.location> элемент внутри <properties> элемент внутри каждого профиля:

<project>
  ...
  <profiles>
    <profile>
      <id>my-profile</id>
      ...
      <properties>
        <your.location>/home/username/resources</your.location>
      </properties>
      ...
    </profile>
    ...
  </profiles>
</project>

Подробнее о фильтрации ресурсов здесь и здесь.

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