运行测试时,我使用h2数据库,并且在src/main/test/db/init.sql
上有一个init.sql。
如果我这样使用JDBC URL:spring.datasource.druid.url=jdbc:h2:mem:s;MODE=MYSQL;INIT=RUNSCRIPT FROM 'classpath:/db/init.sql'
,程序将在以下位置查找它
src/main/test/db/resources/db/init.sql
,这不是init.sql所在的位置。
如果我这样指定:spring.datasource.druid.url=jdbc:h2:mem:s;MODE=MYSQL;INIT=RUNSCRIPT FROM 'classpath:/../db/init.sql'
,它将显示一些错误,表明找不到文件。
问题是,我应该指定哪个URL来使JDBC在src/main/test/db/init.sql
中查找init.sql?
答案 0 :(得分:1)
运行测试时,在资源文件夹中搜索init.sql
文件,因为by default for maven projects在运行测试时,/src/test/resources
目录的内容位于{{ 1}}。因此,当您像在问题中那样,在CLASSPATH
属性中将类路径指定为环境变量时,将在spring.datasource.druid.url
目录之前。
要回答您的问题,要确保可以使用您指定的属性/src/test/resources/
找到init.sql
文件,您需要通过修改spring.datasource.druid.url=jdbc:h2:mem:s;MODE=MYSQL;INIT=RUNSCRIPT FROM 'classpath:/db/init.sql'
来更改默认的Maven资源文件夹构建代码如下:
pom.xml
我建议最佳实践,您宁可将<build>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
<resource>
<directory>src/test</directory>
</resource>
</resources>
</build>
文件移动到init.sql
文件夹并使用应该起作用的属性src/test/resources
。