gpt4 book ai didi

gradle - 使用gradle-flyway插件创建测试数据库后,如何引用c3p0 config中创建的数据库?

转载 作者:行者123 更新时间:2023-12-03 06:19:02 25 4
gpt4 key购买 nike

我正在尝试完成以下任务

1)在测试运行之前,使用gradle-flyway插件创建h2数据库。我能够创建它并将其放在$ {buildDir}下

flyway {
url = "jdbc:h2:file:${buildDir}/db/test/xxxdb"
user = 'root'
locations = [
'classpath:sql'
]
}

2)我的目标是针对在步骤1中创建的该数据库编写集成测试。我正在使用c3p0进行池化,这是我的配置。
<?xml version="1.0"?>
<c3p0-config>
<default-config>
<property name="driverClass">org.h2.Driver</property>
**<property name="jdbcUrl">jdbc:h2:file:@buildDir@/db/test/xxxdb</property>**
<property name="user">xxx</property>
<property name="password">xxx</property>
<property name="minPoolSize">1</property>
<property name="maxPoolSize">50</property>
<property name="acquireIncrement">1</property>
</default-config>
</c3p0-config>

问题:

a)如何配置c3p0以引用在步骤1中创建的构建目录中存在的h2数据库。c3p0需要 jdbcUrl属性中的绝对路径。

b)我使用下面的gradle任务配置了gradle以将@ buildDir @替换为适当的值。因此,当我执行“gradle build”时,已为c3p0正确配置了数据库 jdbcUrl。但是当我通过intelliJ运行测试时,由于intellij在运行测试之前未运行 jdbcUrl任务,因此它仍会读取包含“@ buildDir @”的 processTestResources
processTestResources {
filter(ReplaceTokens, tokens: [buildDir: buildDir.getAbsolutePath()])
}

关于如何解决此问题的任何想法?

最佳答案

感谢Mark的评论。对于相对路径,这是我使用的语法,现在它可以与gradle和intellij一起使用。

jdbc:h2:file:./db/test/xxxdb

关于gradle - 使用gradle-flyway插件创建测试数据库后,如何引用c3p0 config中创建的数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27641988/

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