Maven Изменить значение в файле на основе профиля - PullRequest
25 голосов
/ 25 февраля 2010

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

     resources.location=/home/username/resources

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

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

1 Ответ

48 голосов
/ 25 февраля 2010

Что я хочу сделать, так это как-то заменить значение 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>

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

...