读书人

《Maven实战》札记 2.5 - 依赖的调解

发布时间: 2012-08-08 14:32:45 作者: rapoo

《Maven实战》笔记 2.5 - 依赖的调解
Maven的依赖调解机制

1.如果存在App->A->B-0.9, 又存在App->C->D->B-1.0,那App在打包时会不会把B-0.9和B-1.0都纳入进来?如果不会,倒底选择哪个B?
答案:只会纳入一个,即B-0.9,因为它离App较近(中间只隔了一个A,B-1.0和App之间则隔了D,C两个)

2.App到B存在两条依赖路径,怎么识别这种情况?
答案: mvn dependency:tree -Dverbose,它会显示哪些项目由于这种情况而被“omitted for conflict”

3.B-0.9被选中,会不会导致依赖B-1.0的D在运行时出错?
答案:会的。如果D依赖了B-1.0中有而B-0.9里没有的东西,就会在运行时出错

4.那该怎么办?
答案:
办法1. 在App的pom里,屏蔽掉A对B的依赖

<dependency><groupId>kent.learn</groupId><artifactId>maven-a</artifactId><exclusions><exclusion><groupId>kent.learn</groupId><artifactId>maven-b</artifactId></exclusion></exclusions></dependency>


办法2. 让App直接依赖B-1.0,让其他的对B的传递依赖都失效

读书人网 >软件开发

热点推荐