springboot项目使用maven打包,第三方jar问题

springboot项目使用maven package打包为可执行jar后,第三方jar会被打包进去吗?

答案是肯定的。做了实验如下:

第三方jar的项目结构及jar包结构如下:(该第三方jar采用的是maven工程,打包为普通jar(非可执行jar,没有主类),发现maven工程在maven package后,依赖的jar包不会被一起打包)

将上面的jar包安装到本地maven仓库后,在其他的springboot项目中引用该starter,过程如下:

该springboot项目使用maven package打包为可执行jar包后,观察jar包结构:

在META-INF中有一个MANIFEST.MF文件,描述了boot项目的一些属性。

找到指定目录查看,果然在这里。所以部署在服务器上的boot项目应该是这样找到依赖的第三方jar的。

再观察一下被打包进来的jar的目录结构:

可以发现,和导入前的jar结构完全一致。

扩展

上面已经发现:maven工程在maven package后,依赖的jar包不会被一起打包。

假如maven工程A通过pom导入了maven工程B的jar,但是打包maven工程A时,B不会被打包进去。那么当一个springboot工程C通过maven导入了A使用时,会不会因为缺失B而报错呢?这个我做了一下实验,发现并不会。C导入A后,B也出现在了C的External Libraries列表中,并且打包C为可执行jar后,A、B两个jar同时出现在了BOOT-INF/lib下,并不会出现问题。

截图记录下:

1、这是项目A的结构,项目A是maven项目,打包后,B不会被打包进去

2、这是springboot项目C


maven的更多知识还是有待增强的,需要进行一个系统的学习,期待后续。

相关推荐
旺仔小拳头..2 小时前
Maven相关
java·maven
程序定小飞2 小时前
基于springboot的民宿在线预定平台开发与设计
java·开发语言·spring boot·后端·spring
FREE技术2 小时前
山区农产品售卖系统
java·spring boot
摇滚侠4 小时前
Spring Boot3零基础教程,云服务停机不收费,笔记71
java·spring boot·笔记
摇滚侠4 小时前
Spring Boot3零基础教程,监听 Kafka 消息,笔记78
spring boot·笔记·kafka
不光头强4 小时前
maven进阶
java·maven
摇滚侠5 小时前
Spring Boot3零基础教程,RedisTemplate 定制化,笔记70
spring boot·笔记·后端
寒山李白5 小时前
IntelliJ IDEA新版下载、安装、创建项目及Maven配置的教程(附安装包等)
java·maven·intellij-idea
刘一说6 小时前
深入浅出 Spring Boot 自动配置(Auto-Configuration):原理、机制与最佳实践
java·spring boot·后端