springboot第三方包剥离至lib文件夹下
描述
介绍项目打包时剥离第三方依赖包至lib文件夹下,减少svn太大问题(svn无法比对二进制文件差异,因此是累加,特别占用磁盘空间)
步骤一
1、修改pom.xml,构建\BOOT-INF\lib\下只包含study的jar包,实现构建后本服务的jar包结构为:
|--META-INF
|--BOOT-INF
|--classes
|--lib
|--study-dao-1.0.1-SNAPSHOT.jar
|--study-common-1.0.1-SNAPSHOT.jar
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<layout>ZIP</layout>
<includes>
<include>
<groupId>com.study</groupId>
<artifactId>study-dao</artifactId>
</include>
<include>
<groupId>com.study</groupId>
<artifactId>study-common</artifactId>
</include>
</includes>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
步骤二
修改pom.xml,将jar包中的lib文件夹和本服务的jar包放在同一个文件夹下,目录结构如下:
|--lib
|--xxx.jar
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>target/lib</outputDirectory>
<excludeArtifactIds>study-dao,study-common</excludeArtifactIds>
</configuration>
</execution>
</executions>
</plugin>
问题记录
问题1:
调用接口时报错:Cause: java.lang.InstantiationException: tk.mybatis.mapper.provider.base.BaseSelectProvider。
解决方案:
1.tk.mybatis.mapper-spring-boot-starter版本号从1.1.4变更为1.2.4
2.Application启动类中@MapperScan的引用包变更,从import org.mybatis.spring.annotation.MapperScan; 变更为 import tk.mybatis.spring.annotation.MapperScan;
问题2:
将lib包单独打包后,springboot会优先加载lib下jar包,如果对第三方包源码有修改的地方,建议直接把第三方包源码放到项目内部,不能单独修改某一个类文件
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!