dependencies和dependencyManagement的区别

根据文章标题,我们首先说一下Maven的pom文件中的这两个标签的区别是什么,然后再分别介绍一下每个标签的作用,这两个标签的主要区别有:

  • dependencies是对依赖的引入,引入完成后可以直接使用的;而dependencyManagement只是对依赖进行了声明,并没有对该依赖进行引入,如果需要使用的话还需要通过dependencies进行进入才可以。
  • 父项目中dependencies的依赖即使在子项目的pom文件中没有引入的也会从父项目中通过继承引入该依赖;在父项目中通过dependencyManagement进行了依赖声明,如果子项目中没有通过dependencies进行依赖引入的话,则子项目不会对该jar包或模块有任何的依赖。
  • dependencyManagement在父项目中声明依赖时必须明确该jar包的版本号,在子项目中通过dependencies进行依赖引入的时候,如果子项目没有定义该依赖的版本号则会从父项目的依赖声明中来获取版本号,如果在子项目中再次定义了依赖的版本号的话,则会有限使用子项目中定义的版本号

dependencies的作用

dependencies的作用是将项目中依赖的jar或依赖的其他模块进行引入,并默认为其所有的子项目继承。dependencies中可以包含一个或多个dependency元素,每个dependency中包含的元素有:groupId、artifactId、version、type、scope、optional、exclusions

dependencyManagement的作用

dependencyManagement的作用是声明对jar或者模块的依赖,但是并不会对声明的依赖进行自动引入,如果子项目没有通过dependencies进行依赖引入的话则不会引入该jar或模块。dependencyManagement在实际的应用过程中的主要用途是在父项目的pom文件中对子项目要依赖的jar进行依赖声明和依赖的版本定义,这样在子项目中通过dependencies进行依赖引入的时候即可无需再次定义jar或者模块的版本号,保证了整个项目中对一个jar或模块的依赖是同一个版本,更好的对jar或模块进行统一的管理