Maven依赖重复及版本问题

这里写图片描述

首先,遇到了NoSuchMethod异常,第一反应是类没有加载,查看了一下发现有这个类没有这个方法
这里写图片描述

Maven依赖重复及版本问题_第1张图片

这个类是com.google.guava下的。
我的pom文件中按顺序引入了三个依赖
1.dubbo
2.curator
3.spirngfox.swagger2

这三个依赖中都包含guava,又由于dubbo依赖处于第一位,所以maven3引入了dubbo中16.01版本的guava。curator中guava的版本为10.1,swagger中guava的版本为20.1。由于swagger需要的版本高于引入的版本(20.1的版本由于conflict冲突而被丢弃)也因此导致了NoSuchMethod异常。
Maven依赖重复及版本问题_第2张图片

解决方案:
1、把最高版本的放在前面,maven3在引入这个版本后,不会引入其他版本
2、用把其他版本排除掉
3、直接在最前面引入适当版本的guava(本节中)依赖,maven不会再引入子依赖

idea插件maven helper

老实讲,这个问题还是花了我很长的时间,一方面是刚开始没有想到是依赖冲突的问题,还有一个就是依赖冲突不好找。
可以用:mvn dependency:tree -Dincludes=com.google.guava
但是还是不太好用,于是直接上idea plugin:maven helper

安装后重启idea,在pom.xml文件的左下角出现了一个dependency analyzer
Maven依赖重复及版本问题_第3张图片

棒棒哒

你可能感兴趣的:(maven,idea)