dependencies 与 dependencyManagement 的区别
1、区别说明
所有声明在父 dependencies
里的依赖都会被所有的子项目继承自动引入。
ependencyManagement
里只是声明依赖,并不实现引入,因此子项目需要显示的声明需要用的依赖。只有在子项目中写了该依赖项,不指定具体版本,才会从父项目中继承该项,并且 version
和 scope
都读取自父pom;如果子项目中指定了版本号,那么会使用子项目中指定的版本。
2、DepencyManagement 案例
(1)父项目 pom.xml
此配置即声明了spring-boot的版本信息。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.2.3.RELEASE</version>
</dependency>
</dependencies>
</dependencyManagement>
(2)子项目 pom.xml
spring-boot 无需指定版本信息
<!--继承父类-->
<parent>
<artifactId>itoo-base-parent</artifactId>
<groupId>com.tgb</groupId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../itoo-base-parent/pom.xml</relativePath>
</parent>
<!--依赖关系-->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
(3)使用优点
如果有多个子项目都引用同一样依赖,则可以避免在每个使用的子项目里都声明一个版本号。当想升级或切换到另一个版本时,只需要在顶层父容器里更新,而不需要逐个修改子项目;另外如果某个子项目需要另外的一个版本,只需要声明version即可。