Java 如何在Spring Maven WAR中指定SQLite db文件的位置
我已经看到一些关于这个问题的问题,但我还没有找到一个明确的答案 我需要将SQLite.db文件打包到WAR中,并在WAR或分解WAR中使用该db文件 我的项目是Spring,使用SpringJDBC 对于测试代码的非web部分,类路径中的.db文件一切正常。我可以对数据库运行单元测试,只要使用Java 如何在Spring Maven WAR中指定SQLite db文件的位置,java,spring,sqlite,maven,jdbc,Java,Spring,Sqlite,Maven,Jdbc,我已经看到一些关于这个问题的问题,但我还没有找到一个明确的答案 我需要将SQLite.db文件打包到WAR中,并在WAR或分解WAR中使用该db文件 我的项目是Spring,使用SpringJDBC 对于测试代码的非web部分,类路径中的.db文件一切正常。我可以对数据库运行单元测试,只要使用 <bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="connec
<bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="connectionInitSqls">
<list>
<value>PRAGMA foreign_keys = ON</value>
</list>
</property>
<property name="driverClassName" value="org.sqlite.JDBC" />
<property name="url" value="jdbc:sqlite:app2.db" />
</bean>
我看到它建议我使用
<property name="url" value="jdbc:sqlite:${catalina.base}/webapps/APPNAME/WEB-INF/classes/app2db.db" />
尽管这似乎不适用于我的安装(并且仍然不是最佳解决方案,因为它与周围的部署位置有关)
sqlite允许不使用前面的正斜杠映射相对路径,但是我不能在战争中使用类似的东西
<property name="url" value="jdbc:sqlite:WEB-INF/classes/app2db.db" />
这就是我要寻找的——相对路径映射,这样我可以在WAR中发送.db,然后告诉某人部署到tomcat——或者任何服务器,这是合理的,因为我有需要执行的JAR,大部分是通过Maven与应用打包在一起的--(即使它们的目录结构不正常,或者没有映射路径变量),并且仍然能够通过rw访问从爆炸战争中访问数据库
在部署时,只有将db放入WebContent/resources
目录,我才能将其拉入WAR文件
如果我将
my.db
放在/src/main/resources/my.db
中,它将被打包在/my.war/WEB-INF/classes/my.db
中。(我欢迎任何关于为什么不能这样做的解释,如果不能的话,因为理解这一点也会很有用。)欢迎来到StackOverflow!(你能够作为新用户在那里添加内容吗?)Gerold,可能重复感谢您的回复。我还可以通过此目录(或通过maven WAR插件规范中的解决方案资源映射,通过WebApps子目录中的某些内容)将.db放入WAR的classes子目录,但这不是主要问题。请参阅我的编辑以了解详细信息(我在这里限制了内容长度)。此外,我的投票还没有登记,因为我的声誉还没有完全提升。
<property name="url" value="jdbc:sqlite:WEB-INF/classes/app2db.db" />