简述基于spring boot项目下的maven父子结构

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,以及不需要版本控制的依赖如图所示:

  1. 内置父pom

在这里插入图片描述2. 无需特定版本号的依赖添加到dependencyManagement
在这里插入图片描述

查看内置父pom

点击图示artifactId

在这里插入图片描述

再点击图示artifactId

在这里插入图片描述

  1. 可以看到spring boot内置父pom以及指定了相应版本号

在这里插入图片描述

作用

我们后知道,在项目中可能会存在无数个子模块,如果每个模块都去指定依赖版本,这将会导致项目后期依赖维护困难,通过父pom的dependencyManagement标签去控制依赖版本,保证了子pom无需指定版本,各个模块之间依赖版本相同且管理方便。

同一版本控制使用示例

父pom依赖管理引入需要的依赖,却漂红

在这里插入图片描述

报红的原因

很好理解,父pom在dependencyManagement进行依赖管理时,并不代表这个依赖是当前项目需要的,所以并不会去下载。只有子pom引入这个依赖时,通过父pom查看版本并下载后,项目中才会去下载这个依赖,从而不再漂红。

解决方案

如下图所示,笔者在子pom中引入父pom的dependencyManagement中的依赖后,子pom完成了下载

在这里插入图片描述

再查看父pom文件时,也不会再漂红

在这里插入图片描述

而版本号也是spring boot中内置的版本号,说明我们的子模块完成了依赖版本控制。

参考文献

为什么引入SpringBoot依赖不用加版本号

猜你喜欢

转载自blog.csdn.net/shark_chili3007/article/details/120931206