Dependency Management(依赖管理)是指在软件工程中,管理各种组件或库之间的依赖关系以确保程序正确运行的过程。在现代软件开发中,大多数应用都利用了众多的开源组件和库,这些组件通常被保存在中央仓库中,而且相互之间有着复杂的依赖关系。因此,一个成功的项目需要一个强大的依赖管理系统来管理这些依赖项并确保应用程序的正确性
dependencyManagement里只是声明依赖,并不会引入声明的依赖
当项目工程比较大,存在多个模块时,会在父模块中使用dependencyManagement组件,所有的子项目只需要在父pom 的 “公共依赖声明池” 中挑选自己想要的依赖,而不用关心版本。这样即不会继承到不需要的依赖,又统一了依赖的版本。
如果想统一调整所有子项目某个依赖的版本,只需要在父pom 里更新。不需要修改任何一个子项目。
如果某个子项目不想使用公共的版本号,只需要在 dependency 中加上版本号,子项目就会使用自定义的版本号,不会继承父类版本号。
项目示例:
这是父模块:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>${hutool.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
这是子模块的pom:
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
</dependency>
<!--hutool-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
</dependency>
</dependencies>
简单来说,dependencyManagement可以帮助我们集中管理依赖项的版本和属性信息,从而避免版本冲突和属性设置的错误。如果开发者需要在项目中使用谋个依赖项,只需要在dependencies标签中引用即可,无需手动设置任何属性信息
如果没有使用dependencyManagement组件,直接使用dependencies,则父模块会下载依赖,子模块中就无需声明相同的依赖了