Maven jar包冲突如何解决

依赖传递

假设我们现在有一个多模块项目,依赖关系如图,我们在st-web模块中引入st-dal依赖时,st-common-lib这个依赖也会被我们引入,这个就是依赖传递,下表中列出了scope在依赖过程中发生的变化,列标题为被依赖的模块的scope
在这里插入图片描述
在这里插入图片描述
依赖仲裁

依赖仲裁就是当项目中引入的jar包,groupId (公司域名倒过来)和artifactId (功能命令)一样,但是version不一样,应该选用哪一个version?也经常被人叫做依赖冲突

最短路径原则

假如说我们现在的项目依赖关系如图?那么maven会选用st-common-lib的那个版本呢?

答案是1.1这个版本,st-web到st-common-lib(1.1)的距离为1,st-web到st-common-lib(1.0)的距离为2,选择距离短的,即最短路径原则

在这里插入图片描述
声明优先原则

项目依赖如图,路径一样,会选用st-common-lib的哪个版本呢?这就得看你在pom文件中先声明是哪个依赖,如果在pom.xml中,st-remote-invoker写在前面,就会用1.0这个版本,如果st-dal写在前面,则会用1.1这个版本
在这里插入图片描述
依赖排除

去掉间接引入的jar包

如不想用spring boot默认提供的log,想集成第三方的log时,或者说上面依赖仲裁的第二个例子中,只想用st-common-lib的1.1版本,就可以把1.0版本排除掉
在这里插入图片描述
来源:https://www.toutiao.com/i6690372782695383556/?tt_from=mobile_qq&utm_campaign=client_share&timestamp=1559562917&app=news_article&utm_source=mobile_qq&utm_medium=toutiao_ios&req_id=20190603195517010027042152026204B&group_id=6690372782695383556

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值