个人工作总结

目录

1、Maven中jar包冲突原因与最优解决方案


1、Maven中jar包冲突原因与最优解决方案

jar包冲突原因:当我们在maven项目中引入第三方组件时,三方组件中的依赖可能会与项目已有组件发生冲突。

A —》B —》C —》D1(log 15.0):A中包含对B的依赖,B中包含对C的依赖,C中包含对D1的依赖,假设是D1是日志jar包,version为15.0

E—》F—》D2(log 16.0):E中包含对F的依赖,F包含对D2的依赖,假设是D2是同一个日志jar包,version为16.0

解决方案:

1、Maven默认处理策略:最短路径优先、最先声明优先

最短路径优先:Maven 面对 D1 和 D2 时,会默认选择最短路径的那个 jar 包,即 D2。E—》F—》D2A —》B —》C —》D1路径短。

最先声明优先:如果路径一样的话,如: A—》B—》C1, E—》F—》C2 ,两个依赖路径长度都是 2,那么就选择最先声明。

2、排除依赖:用于排除某项依赖的依赖jar包

我们可以借助Maven Helper插件中的Dependency Analyzer分析冲突的jar包,然后在对应标红版本的jar包上面点击execlude,就可以将该jar包排除出去。

手动在pom.xml中使用<exclusion>标签去排除冲突的jar包(上面利用插件Maven Helper中的execlude方法其实等同于方法1)

3、版本锁定:一般用在继承项目的父项目中,正常项目都是多模块的项目,如moduleA和moduleB共同依赖X这个依赖的话,那么可以将X抽取出来,同时设置其版本号,这样X依赖在升级的时候,不需要分别对moduleA和moduleB模块中的依赖X进行升级,避免太多地方引用X依赖的时候忘记升级造成jar包冲突。

4、maven-shade-plugin插件:保证不影响项目原有依赖版本的情况下正常使用三方组件。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值