我对源路径使用maven约定(src / main src / test),我在src / main / resources / scripts中有我的sql脚本。
我想用H2内存运行我的应用程序,我想使用jdbc url来初始化我的数据库:
database.url=jdbc:h2:mem:;INIT=RUNSCRIPT FROM 'src/main/resources/scripts/create.sql';
我的问题是这个相对路径(src / main / ...)不起作用,如果init = runscript命令没有任何目标,H2不会崩溃。
有人知道我应该使用什么路径来完成这项工作吗?
由于
答案 0 :(得分:81)
您可以使用以下网址:
"jdbc:h2:mem:sample;INIT=RUNSCRIPT FROM 'classpath:scripts/create.sql'"
使用那个可以从classpath运行脚本。所以你可以在你的maven(或其他)项目中添加src / main / resources / scripts或src / test / resources / scripts。
答案 1 :(得分:2)
我建议尝试使用绝对路径作为初学者,只是为了检查一切是否正常。然后,检查您的类路径。例如,bin/main/resources/scripts/create.sql
,假设bin
是编译类的位置,并且在类路径上。
由于您的源所在的src
,通常不在类路径上,这可能是您问题的根源。