验证:maven依赖传递(看懂公司java项目必备基础)

前言

想看懂公司的java项目,maven相关的知识不能少(如果是通过maven管理项目、依赖)

项目结构

父pom中有fastjson依赖(有继承)

版本是1.2.75

子项目mvn01的pom中额外指定版本(mvn02和mvn03中不写fastjson的依赖)

mvn01是自己的版本,mvn02和mvn03都是父pom中的版本,说明在依赖传递的时候,继承(mvn01继承了父项目)大于依赖,02和03中,把mvn01的版本被覆盖为父pom中的版本

子项目mvn01依赖fastjson不指定版本,mvn02的pom中额外指定版本

mvn01是父pom的版本,mvn02用自己指定的,mvn03用父pom中的版本,说明在依赖传递的时候,继承(mvn02继承了父项目)大于依赖,03中把mvn02的版本被覆盖为父pom中的版本

重新打开项目

mvn01和mvn02都添加fastjson依赖,且指定不同版本

父:1.2.75

mvn01:1.2.80 

mvn02:1.2.78

下图说明继承大于依赖,03中把01和02都覆盖为父项目的版本

mvn01、mvn02、mvn04都添加fastjson依赖,且指定不同版本

父:1.2.75

mvn01:1.2.80

mvn02:1.2.78

mvn02:1.2.79

mvn03的依赖中,mvn02在上面

下图说明继承大于依赖,03中把01、02、04都覆盖为父项目的版本

mvn03的依赖中,mvn04在上面

下图说明继承大于依赖,03中把01、02、04都覆盖为父项目的版本

父pom中没有fastjson依赖(无继承)--重点

mvn03依赖一个子项目

注释掉fastjson

mvn01添加的依赖:1.2.47

mvn02添加的依赖:1.2.75

mvn04添加的依赖:1.2.79

重新打开项目,omitted for duplicate表示重复省略,

mvn01自己的,mvn02自己的,mvn02中,把依赖自mvn01的版本替换为自己的了;mvn03中,用mvn02的版本,说明那个近用哪个

mvn03依赖多个子项目

添加mvn04

mvn03同时依赖mvn02和mvn04,mvn02在上面

哪个在上面,03就用哪个

mvn03同时依赖mvn02和mvn04,mvn04在上面

哪个在上面,03就用哪个

mvn03同时依赖mvn02和mvn04,mvn04在上面,但是想用mvn02的

添加排除,exclusion的版本不用指定

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值