解决maven工程jar包之间的冲突

本文介绍了如何在Maven项目中处理jar包冲突,包括直接依赖、传递依赖的概念,以及三种解决策略:第一声明优先、路径近者优先和直接排除法。通过实例展示了排除特定jar包版本的方法,确保项目依赖的正确性和兼容性。
摘要由CSDN通过智能技术生成

maven工程要导入jar包的坐标,就必须要考虑解决jar包之间的冲突。

maven导入jar包中的一些概念:
直接依赖:项目中直接导入的jar包,就是该项目的直接依赖包。
传递依赖:项目中没有直接导入的jar包,可以通过项目直接依赖jar包传递到项目中去的依赖包。

解决jar包冲突的方式:
方式一: 第一声明优先原则。
同一个名字的jar包,版本不一样,都是通过传递依赖进去的话,哪个直接依赖jar包的坐标在靠上的位置,那么这个jar包的版本就可以优先进入项目中。

方式二: 路径近者优先原则。
直接依赖路径比传递依赖路径近,那么最终项目进入的jar包会是路径近的直接依赖包。

方式三【推荐使用】:直接排除法。 //因为方式三可读性更高。
当我们要排除某个jar包下依赖包,在配置exclusions标签的时候,内部可以不写版本号, 因为此时依赖包使用的版本和默认和本jar包一样。

解决jar包冲突的方式三例子:

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId
        <version>4.2.4.RELEASE</version
            <exclusions>
                <exclusion> // 不要的那个jar包
                    <groupId>org. springframerork</groupId>
                    <artifactId>spring-core</artifactId
                </exclusion>
            </exclusions>
    </dependency>

    <dependency>
        <groupId>org. springframework</group Id>
        <artifactId>spring-context</artifactId)
        <version>5.0.2. RELEASE</version
    </dependency>
</dependencies>
所以:这两个直接依赖spring-beans和spring-context都有的传递依赖spring-core导入的版本是 5.0.2。

项目如果还要导入其他jar包的话要注意它们之间的冲突,要高版本的就行,因为会向下兼容。

图示是看jar包之间的依赖,就是哪个jar包要有哪个jar包才能使用。

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值