背景:
最近在项目中搞多数据源切换的job,在src/resource下有初始化的sqlite默认文件供后续拷贝使用,在测试阶段没有什么问题,但是一部署到服务器上运行就有问题。
报错现象:
找不到这个sqlite.db文件或者文件格式有问题,通过查看服务器文件,发现.db文件是存在的,那就纳闷了,难道是切换数据源出问题了,但是本地没问题。
后续排查:
从服务器上下载的sqlite.db文件比本地文件会大一点,这是为啥?
然后用navcat打开这个文件,结果报错格式有误。那说明不是代码问题,应该是编译打包的时候出问题了。
解决方案:
编译的时候使用Maven的资源插件,将这个sqlite.db文件单独作为静态资源进行拷贝复制到jar中的classes文件路径下。pom中配置如下
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>3.2.0</version><configuration><outputDirectory>target/classes</outputDirectory><encoding>UTF-8</encoding><delimiters><delimiter>@</delimiter></delimiters><nonFilteredFileExtensions><nonFilteredFileExtension>db</nonFilteredFileExtension></nonFilteredFileExtensions><skip>false</skip><overwrite>false</overwrite><includeEmptyDirs>true</includeEmptyDirs><useDefaultDelimiters>false</useDefaultDelimiters></configuration></plugin>