zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    列表和元组
    UVM宏
    UVM中重要函数
    组合模式(composite)
    装饰器模式(Decorator)
    适配器模式(Adapter)
    桥接模式
    原型模式(prototype)
    单例模式(singleton)
    UML类图
  • 原文地址:https://www.cnblogs.com/lonecloud/p/5692146.html
Copyright © 2011-2022 走看看