springboot的依赖实现原理:spring-boot-starter-parent解析
01 dependencyManagement的作用
在使用springboot时我们会在项目pom引入以下配置和依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.18</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
</dependencies>
为什么spring-boot-starter和spring-boot-starter-data-redis不需要添加版本号?
这是由于maven的dependencyManagement,该元素的作用是集中管理项目的依赖版本,而不是直接引入依赖。它的主要用途是在多模块项目中统一控制依赖版本,以确保所有子模块使用相同版本的依赖,从而避免版本冲突。接下来我们了解其实现过程。
02 spring-boot-starter-parent的实现
查看spring-boot-starter-parent在maven仓库的目录
由上图可以看到只有spring-boot-starter-parent.pom文件,没有jar文件,查看pom内容它的父依赖是spring-boot-dependencies,并且打包类型是pom,所以在仓库只看到pom文件。
03 spring-boot-dependencies的实现
查看spring-boot-dependencies在maven仓库的目录,同样只有pom文件,没有jar。
pom文件的打包方式也是pom
可以看到依赖使用dependencyManagement统一管理,插件使用pluginManagement统一管理。
04 总结
通过使用dependencyManagement,既统一管理依赖的版本,也可以自由引入想用的jar。在大型多模块项目中,它可以帮助保持依赖的一致性和简化依赖的管理。
道阻且长,行则将至,行而不辍,未来可期!
你的关注是我更新的动力!