Maven dependencyManagement VS dependencies

一、Maven dependencyManagement VS dependencies

1.1、概述

        dependencyManagement是Maven中提供的一种管理依赖版本号的方式,这个配置通常会在一个组织或者项目最顶层的父pom中看到,使用pom.xml中的dependencyManagement元素,可以让所有的子项目中引用一个依赖而不用显示的列出版本号。Maven会沿着父子层次向上走,直到找到一个拥有dependencyManagement元素的项目,然后它就会使用这个标签中指定的版本号。

        这样做的好处是,如果有多个项目都引用同样的依赖,则可以避免在每个子项目中都声明一个版本号,这样当想升级或者切换到另一个版本时,只需要在顶层父容器里修改版本即可,而不需要一个一个子项目的修改,另外如果某个子项目需要使用另外一个版本,只需要声明自己的version版本就行。

注意事项:

        (1)dependencyManagement只是声明依赖,并不实现引入,因此子项目需要显示的声明需要用的依赖;

        (2)如果不在子项目中声明依赖,是不会从父项目中继承下来的。只有在子项目中写了该依赖项,并且没有指定具体版本才会从父项目中继承该项,并且version和scope都读取自父pom;

        (3)如果子项目中指定了版本号,那么会使用子项目中指定的jar版本;

### MavendependencyManagement 的用法和配置 #### 使用场景 当项目模块众多时,使用 Maven 管理项目变得尤为便捷。这不仅有助于管理构建、文档、报告、依赖关系等方面的工作,还能确保所有子项目使用的依赖项及其版本保持一致,从而保障测试环境与生产环境中的一致性[^1]。 #### 配置方式 在顶层 POM 文件中定义 `dependencyManagement` 元素用于集中管理和声明依赖的版本号。这种方式允许开发者在一个地方设定好所需 jar 包的具体版本信息,使得各子项目只需简单引用这些依赖而不必重复指定其版本号。具体来说: - **父级 POM**: 定义全局性的依赖管理规则。 ```xml <project> ... <dependencyManagement> <dependencies> <!-- 示例:Junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!-- 更多依赖... --> </dependencies> </dependencyManagement> ... </project> ``` - **子级 POMs**: 继承自父级并利用已定义好的依赖设置 子项目的 pom.xml 可以像下面这样简洁地引入所需的依赖,无需再次指明版本号: ```xml <project> ... <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <!-- 版本由父POM中的dependencyManagement控制 --> </dependency> <!-- 添加其他本地特有的依赖 --> </dependencies> ... </project> ``` 这种机制有效减少了跨多个子模块间可能出现的版本不匹配问题,并简化了整个项目的维护工作量[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值