Maven中解決依賴沖突的問題


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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM