栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java > SpringBoot

SpringBoot通过maven引入的jar包为什么有的没有版本号

SpringBoot 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot通过maven引入的jar包为什么有的没有版本号

之前学习maven知道,在通过maven引入jar包的时候,需要明确定义其坐标元素groupId、artifactId、version、packaging、classfier,从而确认具体的jar包信息,其中groupId、artifactId、version三要素一定不可缺失,可是有些POM中却没有引入包版本,却可以正常运行,例如下图,那么是为什么呢?

image

我们猜测肯定是有哪个地方有明确的包版本说明,要不然就违背了Maven的规则
其实在springboot的官方文档中也有具体解释这个没有设置包版本的原因,具体可看==>Spring Boot Docs

接下来我们具体分析下其真正的原因

image

如上图,可以看到spring-boot-starter-tomcat是依赖自spring-boot-starters父maven的,其dependency中并没有明确的具体的jar包信息

如下图,再看spring-boot-starters包,其父maven是spring-boot-parent

image

如下图spring-boot-parent的父pom是spring-boot-dependencies,看到这里通过名字应该很清楚在spring-boot-dependencies中肯定包含了大部分默认的jar包版本约定

image

如下图的spring-boot-dependencies,并没有父POM

image

image


image

从上图可以看出在spring-boot-dependencies中利用dependencyManagement管理了所有的jar包
现在也知道了spring-boot-starter-tomcat中的Tomcat版本是8.5.15

dependencyManagement 和 dependencys 有什么区别么?
主要的区别在于被dependencyManagement引入的jar包在子POM中不一定会引入,除非子类明确引入了才可以使用,而dependencys引入的jar包无论子POM是否有使用到都会引入进去的,这样可以做到避免引入没必要的jar包



作者:jwfy
链接:https://www.jianshu.com/p/7c456e0ce65f

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/235191.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号