57

我对源路径(src/main src/test)使用 maven 约定,并且我在 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 不会崩溃。

有人知道我应该使用什么路径来完成这项工作吗?

谢谢

4

2 回答 2

116

您可以使用以下网址:
"jdbc:h2:mem:sample;INIT=RUNSCRIPT FROM 'classpath:scripts/create.sql'"

有了它,就可以从类路径运行脚本。所以你可以把它 src/main/resources/scripts 或 src/test/resources/scripts 放在你的 maven(或其他)项目中。

于 2011-12-13T09:22:59.337 回答
2

我建议尝试对初学者使用绝对路径,以检查一切是否正常。之后,检查您的类路径。例如bin/main/resources/scripts/create.sql,假设bin是您的类的编译位置,并且位于您的类路径中。

由于src您的源代码所在的位置通常不在类路径上,因此这可能是您的问题的根源。

于 2010-12-20T13:47:02.950 回答