Maven: включить файл ресурсов на основе профиля

Я конвертирую проект веб-приложения Ant в Maven. У меня большая часть работы работает, но я застрял, пытаясь понять, как скопировать некоторые файлы ресурсов из разных источников на основе профиля.

я имею src/main/resources/persistence-{dev, prod}.xml, Один из них должен быть включен в файл войны как WEB-INF/classes/META-INF/persistence.xml,

Я хотел бы, чтобы версия dev была скопирована, когда профиль dev активен, и версия prod, когда prod активен.

2 ответа

Решение

Просто используйте плагин ресурсов maven, например, http://maven.apache.org/plugins/maven-resources-plugin/examples/include-exclude.html и задайте свойство для имени файла или расширения в профиле.

Если вы не привержены парадигме наличия 3-х отдельных файлов persistence.xml и выборочного копирования одного или другого, вы можете использовать профили maven с такой фильтрацией (это было реализовано на днях, и сегодня натолкнулся на ваше сообщение):

В файле persistence.xml:

<property name="hibernate.show_sql" value="${hibernate.debug}" />
<property name="hibernate.format_sql" value="${hibernate.debug}" />

В pom.xml создайте профиль и определите переменную:

<profiles>
  <profile>
    <id>hib-debug</id>
    <properties>
      <hibernate.debug>true</hibernate.debug>
    </properties>
  </profile>
</profiles>

определить значение по умолчанию при сборке без указания профиля:

<properties>
  <hibernate.debug>false</hibernate.debug>
</properties>

и.... убедитесь, что вы включили фильтрацию ресурсов:

<resources>
  <resource>
    <directory>src/main/resources</directory>
    <filtering>true</filtering>
  </resource>
</resources>

Затем вы строите с помощью mvn -Phib-debug и вуаля! Замена сделана.

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