1.短路優先:誰離得最近就使用誰的依賴jar包
C到達A為C->B->A
C到達B為C->B
例如:
A中的 commons-io的版本為2.4
B中的commons-io的版本為2.0
C中依賴於B,B依賴於A
則C的junit的包為2.0版本
因為依賴的短路優先
2.如果兩條路都是一樣長的時候呢?
C到達A為C->A
C到達B為C->B
則看pom檔案中依賴的兩個工程誰在前面就是用哪個版本
例如:
這裡使用的common-io為2.4版本
<dependency> <groupId>org.lonecloud.A</groupId> <artifactId>A</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <!--C依賴於B但是會將A的依賴傳遞進來 --> <dependency> <groupId>org.lonecloud.B</groupId> <artifactId>B</artifactId> <version>0.0.1-SNAPSHOT</version> <!-- 此標籤的作用是可以將B的傳遞依賴關係A不傳遞給C --> <!-- <exclusions> <exclusion> <groupId>org.lonecloud.A</groupId> <artifactId>A</artifactId> </exclusion> </exclusions> --> </dependency>
C檔案中新增了A和B的依賴項的時候誰最先載入則使用誰的jar包
下面使用的是2.0的版本,也就是B中的jar包
<dependency> <groupId>org.lonecloud.B</groupId> <artifactId>B</artifactId> <version>0.0.1-SNAPSHOT</version> <!-- 此標籤的作用是可以將B的傳遞依賴關係A不傳遞給C --> <!-- <exclusions> <exclusion> <groupId>org.lonecloud.A</groupId> <artifactId>A</artifactId> </exclusion> </exclusions> --> </dependency> <dependency> <groupId>org.lonecloud.A</groupId> <artifactId>A</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency>