引语:

  • 平时Java项目中我们经常使用​Maven​,再多模块的项目中会经常见到父项目和子项目中的​dependencyManagement​​dependencies​,今天我们就来介绍一下它们的区别。

dependencies,dependency​,​dependencyManagement​这三个​Maven​的​pom`文件标签都是用来进行包管理的。

势力范围由dependencyManagement>​dependencies​>​dependency​依次减弱,并且每个标签都是上一个标签的下级。

【Maven】dependencyManagement和dependencies_版本号


​​dependencyManagement​dependencies​区别:

  • 1️⃣dependencies:自动引入声明在​dependencies​里的所有依赖,并默认被所有的子项目继承。如果项目中不写依赖项,则会从父项目继承(属性全部继承)声明在父项目​dependencies​里的依赖项。
  • 2️⃣dependencyManagement里只是声明依赖(可以理解为只在父项目,外层来声明项目中要引入哪些jar包),因此子项目需要显示的声明需要的依赖。如果不在子项目中声明依赖,是不会从父项目中继承的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且​version​​scope​都读取自父​pom​;如果子项目中指定了版本号,那么会使用子项目中指定的​jar​版本。同时​dependencyManagement​让子项目引用依赖,而不用显示的列出版本号。​Maven​会沿着父子层次向上走,直到找到一个拥有​dependencyManagement​元素的项目,然后它就会使用在这个​dependencyManagement​元素中指定的版本号,实现所有子项目使用的依赖项为同一版本。
  • 3️⃣dependencyManagement 中的 ​dependencies ​并不影响项目的依赖项;而独立​dependencies​元素则影响项目的依赖项。只有当外层的​dependencies​元素中没有指明版本信息时,​dependencyManagement ​中的 ​dependencies ​元素才起作用。一个是项目依赖,一个是​maven​项目多模块情况时作依赖管理控制的。