北京

点击搜索

发布

拉勾教育Maven 基础知识依赖机制

区域:
北京 > 海淀 > 中关村
类别:
软件工程师培训
地址:
创业大街
传递依赖
maven通过读取分析工程依赖的其他工程的pom文件,自动的把依赖工程对应的依赖(包括这些工程自身的依赖以及从父工程继承到的依赖)加入到当前工程的依赖里面。拉勾IT课小编为大家分解
传递依赖机制虽然可以让我们方便的引入项目需要的全部依赖,但很容易就会使我们工程的依赖变的庞大复杂,并且引入的依赖很可能会同时依赖一个jar包的不同版本。因此maven在传递依赖机制中加入了一些机制来管理终加入到工程中的依赖项
•      依赖仲裁(Dependency mediation)
•      依赖范围(Dependency scope)
•      依赖管理(Dependency management)
•      排除依赖(Excluded dependencies)
•      选择性依赖(Optional dependencies)
依赖仲裁
当在依赖树中出现同一个依赖的多个版本时,依赖仲裁 用来决定终采用哪个版本。
maven采用选择 近 的机制来决定终的版本号, 近 指的是在工程的依赖树中距离当前的工程路径短,这就是为什么我们可以通过在当前工程中声明一个特定依赖,从而复盖传递过来的依赖的原因。如果两个依赖在依赖树中的距离一样,则选择 先 声明的。
1.      场景1 工程A有如下依赖树
2.      A
3.      ├── B
4.      │   └── C
5.      │     └── D 2.0
6.      └── E
7.       └── D 1.0
8.      
此时对于D的依赖,有两条路径 A -> B -> C -> D 2.0 和 A -> E -> D 1.0,因为第二条的路径短,所以终选择 D 1.0
9.      场景2 工程A有如下依赖树
10.      A
11.      ├── B
12.      │   └── C
13.      │     └── D 2.0
14.      └── E
15.         └—— F
16.           └—— D 3.0
17.      
此时对于D的依赖有两条 A -> B -> C -> D 2.0 和 A -> E -> F -> D 3.0,此时两条路径一样长,选择先声明的,所以终选择D 2.0
•      根据 依赖仲裁 的机制,当我们在自己的工程中明确写明一个依赖的版本时,就可以确保这就是终采用的版本。但是有一个例外就是 硬性需求(Hard requirements)优先级总是高于 软需求(Soft requirement) 。
查看更多北京电脑/网络信息

免责声明:此信息系发布者(UID:706755)自行发布,本站是服务平台,仅提供信息存储空间服务,该信息内容的真实性及合法性由该发布者完全负责。

© lieju.com 联系我们