MAVEN依赖的优先原则

博客讲述了Maven依赖管理中的优先原则,包括最短路径优先、声明顺序优先和覆盖优先。具体例子展示了当项目间接依赖不同版本的FastJson时,如何根据这些原则决定最终使用的版本。在解决FastJson的安全漏洞问题中,通过调整申明顺序,确保了高版本的FastJson被使用。
摘要由CSDN通过智能技术生成

MAVEN依赖的优先原则

maven依赖的优先原则
1.依赖最短路径优先原则
一个项目Demo依赖了两个jar包,其中A-B-C-X(1.0) , A-D-X(2.0)。由于X(2.0)路径最短,所以项目使用的是X(2.0)。
2.pom文件中申明顺序优先
如果A-B-X(1.0) ,A-C-X(2.0) 这样的路径长度一样怎么办呢?这样的情况下,maven会根据pom文件声明的顺序加载,如果先声明了B,后声明了C,那就最后的依赖就会是X(1.0)。
3. 覆盖优先原则
子pom内声明的优先于父pom中的依赖。
实际使用
背景:FastJson远程代码执行漏洞,攻击者可以通过提交精心构造的JSON数据实现远程代码执行,造成OOM,项目中使用的fastJson版本1.2.16过低 存在该漏洞,现升级为1.2.56
 

v2-6970cd044d0de3a3774f00a201dbcc24_1440w.jpg


图1.png
 

v2-52f935ea10b33181ce43b25be83197b6_1440w.jpg


图2.png

通过上面图一,图二可以看出实际项目fastjson属于被动依赖,项目没有主动引入。按照依赖的优先原则,
a-(durian-conf-client)-(fastjson1.2.16)
a-(rf-login)-(fastjson1.2.44)
durian-conf-client在rf-login之前申明
所以最终项目使用的是fastjson1.2.16。
最终项目申明fastjson 1.2.56。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值