Maven依赖管理中冲突调解及重复类的类加载顺序

本文深入探讨了Maven从2.9版本开始,在解决依赖冲突和改进类加载机制上的策略。包括优先级规则、声明优先级、覆写优先级等,以及在Eclipse环境下类路径的加载顺序。

依赖冲突:

这个是dependency的GA一样但V不同,Maven自2.9(还是2.0.9,不清楚了)开始为了确保确定性,采用如下方法解决:

1. 依赖路径浅的优先:

假设,A->B->slf4j:1.6.2,A->C->E->slf4j:1.4.1,则slf4j:1.6.2优先

2. 声明优先,如果在dependencyManagement中声明的话会优先采用对应插件

3. 覆写优先,子POM内声明的优先于父POM中的依赖


*上述的依赖均假定为compile依赖


********************************************************************************************************

重复类的类加载:

同样是2.9还是2.0.9开始,Maven在classpath中下了一点功夫,由于各个容器对类加载规则的不一,所以以下仅讨论对Eclipse的类路径影响。

现在,由Maven插件向Eclipse提供的类路径是有顺序的,以当前工程为原点,加载顺序为:

1. 首先加载test-class,这个m2eclipse的jira上显示为fixed的一个issue:http://jira.codehaus.org/browse/MECLIPSE-318

2. 当前POM的依赖,顺序按照pom.xml内使用的顺序(由上至下,靠上优先加载)

3. 父POM使用的依赖会被最后加载


*上述观点均为资料收集后理解结果,并未经过测试!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值