dependencies和dependencyManagement的区别
dependencyManagement和 dependencies的区别
在 Maven 项目的 pom.xml 文件中,dependencyManagement 和 dependencies是两个用于管理依赖的标签,但它们的作用和使用场景不同。
以下是它们的主要区别:
dependencyManagement
作用:
用于集中管理依赖的版本和作用域,通常在父 POM 中定义。
特点:
不会直接引入依赖,只是声明依赖的版本和配置。
子模块可以继承这些配置,避免版本不一致的问题。
场景:适用于多模块项目,统一管理各个模块的依赖版本。
dependencies
作用:
用于声明当前项目实际需要的依赖。
特点:
直接引入依赖,项目会下载并使用这些依赖。
可以覆盖 dependencyManagement 中定义的版本。
使用场景:适用于当前项目或模块,声明具体的依赖需求。
示例
<!-- 父 POM 中的 dependencyManagement -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.5.4</version>
</dependency>
</dependencies>
</dependencyManagement>
<!-- 子模块中的 dependencies -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 可以省略版本号,继承父 POM 中的版本 -->
</dependency>
</dependencies>
总结
dependencyManagement:用于集中管理依赖的版本和配置,适用于多模块项目。
dependencies:用于声明当前项目实际需要的依赖,直接引入并使用这些依赖。