您的位置:首页 > 其它

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

2015-05-13 09:42 260 查看
依赖冲突:

这个是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使用的依赖会被最后加载

*上述观点均为资料收集后理解结果,并未经过测试!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: