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