maven编译jar踩坑[sqlite.db]

背景:

最近在项目中搞多数据源切换的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>
相关推荐
CookieCrusher3 小时前
数据泄露危机逼近:五款电脑加密软件为企业筑起安全防线
运维·数据库·windows·安全·文件加密·数据防泄漏·dlp
这周也會开心4 小时前
SQL-窗口函数
数据库·sql
TDengine (老段)6 小时前
TDengine 时间函数 WEEKDAY() 用户手册
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
TDengine (老段)6 小时前
从 ETL 到 Agentic AI:工业数据管理变革与 TDengine IDMP 的治理之道
数据库·数据仓库·人工智能·物联网·时序数据库·etl·tdengine
LQ深蹲不写BUG8 小时前
MySql的事务机制
数据库·mysql
逼子格9 小时前
【Proteus仿真】定时器控制系列仿真——秒表计数/数码管显示时间
数据库·单片机·嵌入式硬件·51单片机·proteus·定时器·硬件工程师
stein_java10 小时前
Mybatis-7 XML映射器
数据库·sql·mybatis
xhbh66610 小时前
开发效率翻倍:资深DBA都在用的MySQL客户端利器
数据库·mysql·数据库连接工具·mysql 连接工具
LJC_Superman11 小时前
Web与Nginx网站服务
运维·服务器·前端·网络·数据库·nginx·vim