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 и вуаля! Замена сделана.