Maven中dependencies和dependencyManagement的区别
Maven项目中,为了保持引用依赖的一致性,一般会抽出一个parent层,用来管理子项目的maven依赖,对于依赖的管理有两种方式,分别是dependencies以及dependencyManagement,那么这两者有什么区别呢?
区别
两者都可以引入maven依赖,但是主要的区别有以下几点:
- dependencyManagement引入的依赖在子项目中不会自动引入
使用dependencyManagement在parent中引入的依赖只是对依赖进行了一个声明,在子项目中需要使用相应的依赖时还是需要再次引入依赖的。
- dependencies引入的依赖在子项目中会自动引入
使用dependencies引入的依赖,在子项目中会自动引入依赖,即使不在pom中声明依赖,子项目也会自动引入parent中声明的依赖。
- dependencyManagement引入的依赖,子类可以对版本进行覆盖
dependencyManagement引入的依赖,在子类中进行声明时,可以不写版本号,此时会自动继承父类的版本号,但是如果需要定义一个新的版本,那么需要写上新的版本号,此时就会覆盖父类的版本。
优点
使用dependencyManagement管理maven依赖可以有以下几个优点:
- 统一管理依赖版本以及作用域等,升级或者切换都比较方便;
- 子类可以根据需要从父类中继承相应的jar包,而不是引入父类中所有的jar包;
- 子类继承依赖时,不需要定义版本号和作用域。