我已经开发了一个使用Spring Boot的小应用程序,该应用程序暂时使用HSQLDB作为数据库来存储用户。我想要做的是将数据库存储在Maven的资源文件夹中。我application.properties文件包含以下配置:WAR中的资源中的HSQLDB
#...
spring.datasource.url=jdbc:hsqldb:file:src/main/resources/database/dashboard
#...
所以,当我开始使用Java应用程序(右键点击我的应用程序的main()和运行方式春季启动应用程序),数据库存储的权利。
但是,在将WAR文件打包为mvn clean install spring-boot:repackage
后,将其部署到Tomcat(例如并运行它)后,数据库不存储在爆炸WAR中。
我的问题是我怎么能告诉spring.datasource.url=jdbc:hsqldb:file:*
属性来存储Maven资源目录中的数据库(它将在爆炸WAR后仍然指向)?我可以使用pom.xml中使用的某种环境变量吗?
编辑 鉴于@Steve C和@fredt的答案,我意识到数据库不应该存储在战争中。相反,我会将其存储在用户的主目录spring.datasource.url=jdbc:hsqldb:file:~/tomcat_webapp_data/dashboard/database
..非常感谢!
您似乎正在使用相对路径指向hsqldb。 Hsql的文件位置将相对于工作目录(可能是bin/in tomcat /)。你应该使用绝对路径。 – Redlab
1)更好的使用Apache Derby,HSQLDB总是被完全加载到RAM内存中 - 这可能会让你的应用程序更大的DB 2)只是改变构建脚本包括整个db目录iinto war,然后一定要有正确的路径db在服务器容器中的文件 –
@Redlab我不想使用绝对路径,因为我不知道将要放置WAR的系统的性质(linux,win ...)以及它是否会运行与java。 – russellhoff