gpt4 book ai didi

jakarta-ee - 不同 Maven 配置文件的不同持久化单元

转载 作者:行者123 更新时间:2023-12-04 00:37:41 26 4
gpt4 key购买 nike

我想根据所选的 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>
...

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

<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 文件,甚至可以即时创建一个文件。

关于jakarta-ee - 不同 Maven 配置文件的不同持久化单元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22834464/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com