Это возможно, хотя и без изменения persistence.xml
:
Мы используем Maven профили и фильтрацию ресурсов для этого. Вам нужно будет определить заполнители в вашем persistence.xml
, которые соответствуют именам свойств в вашем файле .properties
или в вашем .pom
.
Во время сборки вы указываете профиль, и maven заменит заполнители вашими свойствами.
Мы использовали этот метод для переключения источника данных между различными средами развертывания. Вы также можете использовать его для переключения PU или других свойств.
Во-первых, определить профиль для фильтрации ресурсов:
<profiles>
<profile>
<id>set_datasource</id>
<build>
<!-- enable resource filter to set the datasource name -->
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
...
Создать профиль для каждого источника данных:
<profile>
<id>db_test</id>
<properties>
<database.name>test_ds</database.name>
</properties>
</profile>
В вашей настойчивости единицы, подготовить заполнитель
<persistence-unit name="my_db">
<jta-data-source>java:jboss/datasources/${datasource.name}</jta-data-source>
</persistence-unit>
вызовов maven с двумя профилями:
mvn test -Pset_datasource,db_test
Обратите внимание, что мы используем это в основном для пользовательских и пользовательских тестов. Для интеграционных/функциональных тестов мы используем Arquillian. Для Arquillian вы можете определить отдельный файл persistence.xml
или даже создать его на лету.