【maven】解决jar包冲突

maven工程中jar包冲突原因

来个栗子:你买了一个四色笔,里面有红黄蓝黑四种颜色。还买了一根三色笔,是红紫绿。我想在书上做个标记,跟你借一下红颜色的笔,你会给我哪只呢?

当然你给我哪只我都能用,但是在maven中可就不行了。
例如导入以下jar包:
在这里插入图片描述
又引入以下jar包之后:

导入contextjar包的时候因为传递依赖也引入了beans,是5.0.2.RELEASE版本的,(为了演示效果)我又引入beans5.1.8.RELEASE之后,5.0.2.RELEASE版本的beans没有了,可是spring-context需要的是这个,这时候就产生了jar包冲突。

总结:jar包冲突的原因:传递依赖。

maven工程中jar包冲突解决方式

1、第一生命优先原则:哪个jar包的坐标在靠上的位置,这个jar包就是先声明的。先声明的jar包坐标下 的依赖包会优先进入项目中。

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

3、直接排除法【推荐使用方法】:添加exclusion标签,则其下的传递依赖jar包版本都和当前jar包版本相同。

	<dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.0.2.RELEASE</version>
      <exclusions>
        <exclusion>
          <groupId>org.springframework</groupId>
          <artifactId>spring-beans</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

目前是学习,等以后实际开发中遇到jar包冲突的问题再来补充。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值