Ben*_*uer 1 database-connection persistence.xml java-ee maven-3 maven-profiles
我想根据所选的Maven配置文件使用两个不同的数据库.对于配置文件"生产",我想使用MySQL数据库,对于"开发"配置文件,我想使用内存中的HSQLDB.
我发现可以有两个persistence.xml文件.一个在"src/main/resources/META-INF"中,另一个存储在"src/test/resources/META-INF"中.这样就可以选择不同的数据库进行测试.
但是,是否也可以根据所选的Maven配置文件进行数据库选择?
这是可能的,但不改变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>
...
Run Code Online (Sandbox Code Playgroud)
为每个数据源创建配置文件:
<profile>
<id>db_test</id>
<properties>
<database.name>test_ds</database.name>
</properties>
</profile>
Run Code Online (Sandbox Code Playgroud)
在持久性单元中,准备占位符
<persistence-unit name="my_db">
<jta-data-source>java:jboss/datasources/${datasource.name}</jta-data-source>
</persistence-unit>
Run Code Online (Sandbox Code Playgroud)
使用两个配置文件调用maven:
mvn test -Pset_datasource,db_test
Run Code Online (Sandbox Code Playgroud)
请注意,我们主要用于UI和用户测试.对于集成/功能测试,我们使用Arquillian.对于Arquillian,您可以定义单独的persistence.xml文件,甚至可以即时创建一个文件.
| 归档时间: |
|
| 查看次数: |
2608 次 |
| 最近记录: |