首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不同Maven配置文件的不同持久性单元

问不同Maven配置文件的不同持久性单元
EN

Stack Overflow用户
提问于 2014-04-03 18:13:27
回答 1查看 3.1K关注 0票数 3

根据所选的Maven配置文件,我想使用两个不同的数据库。对于概要文件"production“,我希望使用MySQL数据库,而对于"development”概要文件,我希望使用内存中的HSQLDB。

我发现可以有两个persistence.xml文件。一个存储在"src/main/resources/META-INF“中,另一个存储在"src/test/resources/META-INF”中。这使得选择不同的数据库进行测试成为可能。

但是,是否也可以根据所选的Maven配置文件进行数据库选择?

EN

回答 1

Stack Overflow用户

发布于 2014-04-03 18:18:04

这是可能的,但不需要更改persistence.xml

为此,我们使用maven配置文件和资源过滤。您需要在persistence.xml中定义与.properties文件或.pom中的属性名称相匹配的占位符。

在构建过程中,您指定配置文件,maven将用您的属性替换占位符。

我们已经使用此技术在不同的部署环境之间切换数据源。您还可以使用它来切换PU或其他属性。

首先,定义用于资源过滤的配置文件:

代码语言:javascript
复制
<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>
      ...

为每个数据源创建配置文件:

代码语言:javascript
复制
<profile>
      <id>db_test</id>
    <properties>
      <database.name>test_ds</database.name>
    </properties>
</profile>

在持久性单元中,准备占位符

代码语言:javascript
复制
  <persistence-unit name="my_db">
    <jta-data-source>java:jboss/datasources/${datasource.name}</jta-data-source>
  </persistence-unit>

使用以下两个配置文件调用maven:

代码语言:javascript
复制
mvn test -Pset_datasource,db_test

请注意,我们主要用于UI测试和用户测试。对于集成/功能测试,我们使用Arquillian。对于Arquillian,您可以定义一个单独的persistence.xml文件,甚至可以动态创建一个。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22834464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档