Maven开发笔记(三)—— Maven中dependencies和dependencyManagement

1.dependency简介

dependency 元素用于定义对其他项目的依赖关系,其中,常见的子元素有:groupId , artifactId , version , type , scope , systemPath , optional , classifier , exclusions 等。其中,绝大部分元素,我们前面都有介绍过,这里就不一一赘述了。我们这里简要介绍一下 version 元素的多种表示方式。

version 有如下表示方式

  • 1.0 : 非硬性要求,只是一个建议
  • [1.0] : 硬性要求,版本必须为1.0
  • (,1.0] : x <= 1.0
  • [1.2,1.3] : 1.2 <= x <= 1.3
  • [1.0,2.0) :1.0 <= x < 2.0
  • [1.5,) :x >= 1.5
  • (,1.0],[1.2,) : x <= 1.0 or x >= 1.2,多个集合以逗号分隔
  • (,1.1),(1.1,) : 排除1.1版本号的其他版本

2.dependencies和dependencyManagement的区别概述

pom.xml 文件中,我们可以看到,dependenciesdependency 的父元素,而 dependencyManagement 又是 dependencies 的父元素,而 dependencies 元素的使用情况又分为两种,一种,dependencies 元素外没有 dependencyManagement 父元素,另一种,dependencies 元素外还存在 dependencyManagement 父元素。当然,两种使用情况可以在同一 pom.xml 文件中共存,因为二者的作用不同。

我们知道 dependency 元素是用来定义本项目对其他项目的依赖关系的。那么, dependenciesdependencyManagementdependency 的作用又有什么不同呢?从宏观上讲,dependencies 中的 dependency 元素下声明的依赖会被引入当前项目,而且在子项目中即使不写该依赖项,依旧会从父项目中继承该依赖项(全部继承),而 dependencyManagement 中的 dependencies 中的 dependency 元素下声明的依赖不会被引入当前项目,它仅仅是一个声明,如果在子项目中不写该依赖项,则不会从父项目中继承该依赖项,如果子项目真的需要引入该依赖,则在声明的时候,可以不用指定具体版本号,会自动继承父项目 dependencyManagement 中声明的版本号,从而实现了对依赖版本的统一管理。当然,如果子项目需要使用不同于父项目中声明的版本号,则需要在声明时指定版本号。

3.dependencyManagement小结

通过 dependencyManagement 元素,可以将项目的依赖关系细节收归一处,方便管理和升级。然而,我们在享受 dependencyManagement 元素带来的巨大便利的同时,需要特别注意的是,通过依赖传递而被引入的项目依赖的版本(version)和有效范围(scope)都会受到 dependencyManagement 元素中对应依赖的控制(如果存在对应依赖的话)。例如:项目A需要依赖项目B和项目C,项目A的 dependencyManagement 元素中声明了项目B的版本为1.0,如果此时项目C也依赖项目B,而且只有项目B的版本大于等于2.0,项目C才能运行。这时候,项目A中引入对项目B的依赖,其版本按照 dependencyManagement 中的声明为1.0版本,这时候就会导致项目不能正常运行。这一点,需要特别注意。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值