maven父子结构
结构简述
如下图所示,maven父子结构即父pom设置指定module作为子模块,而子模块通过parent标签指定父模块,通过这样的做法为后续各个模块引入同一个依赖的版本做铺垫。
父文件夹
- pom.xml(使用module管理所有子模块)
- 子文件夹
- pom.xml(使用parent指向父pom)
示例
父pom
引入子模块
设置自己的id让子pom识别
子pom
指定自己的父pom
spring boot内置了版本
概述
我们经常看到spring boot项目中再配置依赖管理时,不需要指定版本,这是因为我们在创建spring boot的父pom时,这个父pom也有内置了一个自己的父pom,而这个父pom对依赖版本进行了控制,spring boot项目的内置父pom,以及不需要版本控制的依赖如图所示:
- 内置父pom
2. 无需特定版本号的依赖添加到dependencyManagement
查看内置父pom
点击图示artifactId
再点击图示artifactId
- 可以看到spring boot内置父pom以及指定了相应版本号
作用
我们后知道,在项目中可能会存在无数个子模块,如果每个模块都去指定依赖版本,这将会导致项目后期依赖维护困难,通过父pom的dependencyManagement标签去控制依赖版本,保证了子pom无需指定版本,各个模块之间依赖版本相同且管理方便。
同一版本控制使用示例
父pom依赖管理引入需要的依赖,却漂红
扫描二维码关注公众号,回复:
13301362 查看本文章
报红的原因
很好理解,父pom在dependencyManagement进行依赖管理时,并不代表这个依赖是当前项目需要的,所以并不会去下载。只有子pom引入这个依赖时,通过父pom查看版本并下载后,项目中才会去下载这个依赖,从而不再漂红。
解决方案
如下图所示,笔者在子pom中引入父pom的dependencyManagement中的依赖后,子pom完成了下载
再查看父pom文件时,也不会再漂红
而版本号也是spring boot中内置的版本号,说明我们的子模块完成了依赖版本控制。