Maven: включить файл ресурсов на основе профиля - PullRequest
9 голосов
/ 08 сентября 2011

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

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

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

Ответы [ 2 ]

10 голосов
/ 08 сентября 2011

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

7 голосов
/ 13 января 2014

Если вы не привержены парадигме наличия 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 и вуаля! Замена сделана.

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