Maven Helper插件——实现一键Maven依赖冲突问题

总结/朱季谦

业余在一个SpringBoot项目集成Swagger2时,启动过程一直出现以下报错信息------

An attempt was made to call a method that does not exist. The attempt was made from the following location:

​ springfox.documentation.schema.DefaultModelDependencyProvider.dependentModels(DefaultModelDependencyProvider.java:79)

The following method did not exist:

​ com.google.common.collect.FluentIterable.concat(Ljava/lang/Iterable;Ljava/lang/Iterable;)Lcom/google/common/collect/FluentIterable;

The method's class, com.google.common.collect.FluentIterable, is available from the following locations:

​ jar:file:/C:/Users/92493/.m2/repository/com/google/guava/guava/18.0/guava-18.0.jar!/com/google/common/collect/FluentIterable.class

The class hierarchy was loaded from the following locations:

​ com.google.common.collect.FluentIterable: file:/C:/Users/92493/.m2/repository/com/google/guava/guava/18.0/guava-18.0.jar

Action:

Correct the classpath of your application so that it contains a single, compatible version of com.google.common.collect.FluentIterable

出现这个问题,大概猜测到,应该是Maven依赖冲突导致的,忽然想到,是否有可以检查maven依赖冲突的插件呢,一查发现还真有,而且极方便。

这个Idea插件,叫Maven Helper,根据File -> Settings -> Plugins -> Marketplace 输入Maven Helper即可找到。

下载后,重启IDEA,这时点击pom.xml文件,会发现多了一栏【Dependency Analyzer】------

切换至【Dependency Analyzer】栏,在搜索框输入冲突包guava,即会出现,guava都被哪些包依赖了,当多个组件包都依赖了同一个包但又不同版本时,很容易久出现各种冲突。红色部分即是导致启动报异常的地方,可见,springfox-core已经依赖的是20.0包,但其他还依赖18版本的包,这里可以把报错提示的18.0版本的通过exclusion去除即可。

选中对应想去除的包,右击即可一键exclusion------

再切换至Text栏,即可发现已经自动增加了exclusions模块------

XML 复制代码
<dependency>
    <groupId>io.shardingsphere</groupId>
    <artifactId>sharding-jdbc-spring-namespace</artifactId>
    <version>3.1.0</version>
    <exclusions>
        <exclusion>
            <artifactId>guava</artifactId>
            <groupId>com.google.guava</groupId>
        </exclusion>
    </exclusions>
</dependency>
相关推荐
在努力的前端小白1 小时前
Spring Boot 敏感词过滤组件实现:基于DFA算法的高效敏感词检测与替换
java·数据库·spring boot·文本处理·敏感词过滤·dfa算法·组件开发
一叶飘零_sweeeet4 小时前
从繁琐到优雅:Java Lambda 表达式全解析与实战指南
java·lambda·java8
艾伦~耶格尔4 小时前
【集合框架LinkedList底层添加元素机制】
java·开发语言·学习·面试
一只叫煤球的猫4 小时前
🕰 一个案例带你彻底搞懂延迟双删
java·后端·面试
最初的↘那颗心4 小时前
Flink Stream API 源码走读 - print()
java·大数据·hadoop·flink·实时计算
JH30735 小时前
Maven的三种项目打包方式——pom,jar,war的区别
java·maven·jar
带刺的坐椅6 小时前
轻量级流程编排框架,Solon Flow v3.5.0 发布
java·solon·workflow·flow·solon-flow
David爱编程6 小时前
线程调度策略详解:时间片轮转 vs 优先级机制,面试常考!
java·后端
阿冲Runner7 小时前
创建一个生产可用的线程池
java·后端
写bug写bug7 小时前
你真的会用枚举吗
java·后端·设计模式