在我们使用maven进行jar包管理的时候,因为jar包传递依赖,可能会导致相同jar包的不同版本被依赖,由于包管理的依赖优先级会导致最终实际引入的jar包不是你最终需要的版本,由此可能出现类找不到的情况。针对这种jar包冲突的问题,可以依赖idea来很好的解决。
这边展示两种解决问题的方法,一种利用idea自带的show dependencies
,另一种是maven helper
插件。
一 show dependencies
打开pom.xml文件,如下图操作:
选择show dependencies
,则会展示项目的jar包依赖图:
看图中出现的红线,则表明出现了jar包冲突(依赖太多确实观察不太爽)。找到有冲突的jar包,按Ctrl + F搜索,回车查看结果。例如:
图中虚红线表示该依赖其实是指向了另外的一个版本;实红线,表示该依赖其实有多个不同的版本。此时,找到你想排出的版本,右键操作如下:
此时pom.xml文件会自动更新如下:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
<exclusions>
<exclusion>
<artifactId>guava</artifactId>
<groupId>com.google.guava</groupId>
</exclusion>
</exclusions>
</dependency>
二 maven helper
maven helper
是一款idea插件,首先安装:
安装好之后,打开pom.xml文件,可以在左下角看到如下标签:
单击这个标签,出现如下图:
选中右键就可以 Exclude 啦,就可以把不需要的版本的Exclude掉。
三 总结
从使用上来看,还是使用maven helper
更方便快捷,利用idea的show dependencies
图太大,不好观察操作。很可惜的就是如果用gradle来管理依赖的话,我并没有找到类似的插件。