【问题标题】:Different persistence units for different Maven profiles不同 Maven 配置文件的不同持久性单元
【发布时间】:2014-05-15 02:16:14
【问题描述】:

我想根据所选的 Maven 配置文件使用两个不同的数据库。对于“生产”配置文件,我想使用 MySQL 数据库,而对于“开发”配置文件,我想使用内存中的 HSQLDB。

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

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

【问题讨论】:

    标签: jakarta-ee database-connection maven-3 persistence.xml maven-profiles


    【解决方案1】:

    这是可能的,但无需更改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
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-18
      • 2019-03-18
      • 2012-03-11
      • 2015-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多