dependencyManagement:
Maven使用dependencyManagement元素提供了一种管理依赖版本号的方式
通常会在一个组织或者项目的最顶层父pom中可以看到dependencyManagement元素
使用pom.xml中的dependencyManagement元素能让所有的子项目中引用一个依赖而不需要显示的列出版本号。
Maven会沿用父子层次向上走,直到找到一个拥有dependencyManagement元素的项目,然后它就会使用dependencyManagement元素中提供的指定版本号。
<properties>
<mysql.version>8.0.18</mysql.version>
</properties>
<dependencyManagement>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
</dependencyManagement>
如上父类工厂中pom文件,然后在子项目中就可以添加mysql-connector时不指定版本号;
这样的好处是多个子项目引用同样的依赖,则可以避免在每个使用的子项目里都声明一个版本号,这样当想升级或者切换到另外一个版本时,只需要在顶层父容器更新版本号即可,不需要一个一个子项目中修改;另外如果某个子项目需要另外一个版本,则需要声明version即可。
* dependencyManagement只是声明依赖,并不实现引入,因此子项目需要显示的声明所需要的依赖
如果不在子项目中声明依赖,是不会从父项目中继承下来的,只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom。
如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。