Maven 项目中 pom 文件中的 dependencyManagement,dependencies,dependency有什么区别? 📅 2026/7/11 10:38:25 目录一. 依赖版本的统一管控dependencyManagement二. 依赖的集合容器dependencies三. 依赖声明的基础单元dependency一.依赖版本的统一管控dependencyManagement锁定依赖版本但不实际引入依赖dependencyManagement 这个属性通常会在一个组织或者项目的最顶级父pom文件中看到它它是用来提供一种管理依赖版本号的作用使用了 dependencyManagement 这个属性之后能让所有子项目在引入依赖时无需再次指定版本号Maven 会逐层向上查找直到找到含有 dependencyManagement 元素的项目然后就会使用dependencyManagement 元素中指定的版本号。如下所示这个是顶级父项目的pom.xml文件在 dependencyManagement 元素中我已经指定好了各个依赖的版本号那么在该项目的子项目中当我们引入父项目中已经有的依赖时就不需要再指定依赖的版本号了最最重要的一点是dependencyManagement 中只负责依赖版本的声明不实现依赖引入子项目中需要什么依赖包还是需要自行导入只是不需要声明依赖版本号若不声明版本号默认使用 dependencyManagement 标记的版本若自行声明了依赖版本号则会覆盖父级的版本dependencyManagement 最大的好处就是极大的统一了项目的各个依赖的版本后续版本升级只需要修改最顶层项目 pom.xml 文件中的 dependencyManagement 中的版本即可就可以通过 Maven 依赖的传递性作用到整个项目中方便了项目依赖的管理!-- 顶层pom规定各个依赖的版本号若子模块不显式声明使用这里的版本若显式声明使用自己的版本号 -- dependencyManagement dependencies !--Spring Boot BOM-- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-dependencies/artifactId version2.3.2.RELEASE/version typepom/type scopeimport/scope /dependency !--Spring Cloud BOM必须加 type 和 scope-- dependency groupIdorg.springframework.cloud/groupId artifactIdspring-cloud-dependencies/artifactId versionHoxton.SR10/version typepom/type scopeimport/scope !-- 这里缺失了 -- /dependency !--spring-cloud-alibaba依赖-- dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-alibaba-dependencies/artifactId version2.2.5.RELEASE/version /dependency !--mysql依赖-- dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId version5.1.47/version /dependency !--druid-- dependency groupIdcom.alibaba/groupId artifactIddruid/artifactId version1.1.23/version /dependency /dependencies /dependencyManagement二.依赖的集合容器dependencies可以包裹多个依赖可内嵌 dependency 标签引入依赖dependencies 就很好理解了它可以包含在 dependencyManagement 元素的内部也可以不包含在内部比如我们的子项目或者子模块就可以直接以此标签开始引入依赖dependencies !-- 必须写否则不会引入 -- dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId !-- 版本号可以省略会自动继承父 POM 中的 5.1.47若自行标注其他版本号则会使用自己声明的版本 -- /dependency /dependenciesdependencies 内部可以写多个 dependency 标签引入精确依赖包父级中如果写会导致所有子项目自动引入通常会在各个子项目的 pom.xml 文件中都会用到是 dependency 标签的上一级三.依赖声明的基础单元dependency实际声明引入依赖的标签dependency 就是引入各个依赖所需要的标签groupIdartifactIdversion就是我们常说的 gav 坐标通过此标签就可以在项目中实际导入我们需要的外部依赖