maven解决包冲突

前言

这边篇文章主要是来讲解我们日常开发中碰到一些Maven包冲突的一个解决方案。如何去一步一步进行排查,然后找到思路解决某一个固定的痛点和问题。在我们日常的导入包当中,可能不经意间就会导入一些相同类名的包或者路径的包。因为不同的包,它可能依赖某一个版本的可能不是同一个版本,这样就会导致一个冲突产生。可能版本不一致也有一定的原因。

问题

这里主要是在讲我在开发中碰到一个类名冲突的一个问题。因为我导入的一个类的路径跟我想要的另一个类的路径重合了,但是版本和依赖却不一致。所以才产生了接下来的一个解决问题的过程。

maven解决包冲突_第1张图片

排查问题

这里主要是在讲,我们进行一个pom文件的包导入的时候,在旁边可以清楚的看到对应的一个包的引用。你可以进行一个筛选。在这里你可以看到一些冲突的包,可以展示他的列表或者树状类型。这里尤其强调的一个点就是当我们需要找到某个包的时候,我们可以指定跳到它对应的jar包上面,也就是那类的实际代码上面,可以在Idea上面直接看到对应的jar,不得不说这是非常方便的一个工具。

maven解决包冲突_第2张图片

查找冲突

接着就是我们常见的一些jar包冲突的一些检查方法,在这里我们就可以看到。不同的包,但是它引用了同一个子版本的包,而且包路径相包的名字版本号是一致的,这就导致了一个冲突了。只需要排除对应的引用就好。

maven解决包冲突_第3张图片

图形预览

另外还有一种查看方式,就是通过一个图表的表格方式去查看不同的包之间的一个引用。在这里有一个点,主要是当你包引用的足够多的时候,就变得很卡顿。而且检索起来也很慢,但这种方式非常的直观看,有取舍吧。

maven解决包冲突_第4张图片

同样的,在这里你也可以去寻找你想要的包。进行一个跳跃到对应的实际的包和类。

maven解决包冲突_第5张图片

maven命令查找

另外还有一种方式是直接通过maven命令的方式去查找对应的一个包。

mvn dependency:tree -Dverbose -Dincludes=org.mockito:mockito-core 

[INFO] --- maven-dependency-plugin:3.1.1:tree (default-cli) @ agent ---
[INFO] Verbose not supported since maven-dependency-plugin 3.0
[INFO] com.nogle.util:agent:jar:2.0
[INFO] \- org.mockito:mockito-inline:jar:4.5.1:test
[INFO]    \- org.mockito:mockito-core:jar:4.5.1:test

解决方案

最后,在这里我找到了两个不同版本的包相冲突了,而且是来自不同的依赖,这样就好办了,我只需要删除或者排除对应的一个依赖就可以解决冲突这个问题。

maven配置环境


在最下面主要是我贴的一个。配置mvn环境的一个方式,因为有些时候可能我们用的idea的默认的一个maven的配置。从而导致你在终端无法进行一个mvn命令的操控。这就是详细的一个配置环境的过程。

        
vim ~/.bash_profile        
export M2_HOME=/apache-maven-3.6.3
export PATH=$M2_HOME/bin:$PATH
source ~/.bash_profile

总结

最后我想说的是当发现一个问题的时候,我们需要逐步拆解,一步一步找到我们需要处理的问题的点。不得不说idea这个编辑器还是非常强大的。今天这篇文章主要是对我的一个解决冲突的一个思路的回顾。

最后

点赞关注评论一键三连,每周分享技术干货、开源项目、实战经验、国外优质文章翻译等,您的关注将是我的更新动力!

你可能感兴趣的:(java后端,maven,pycharm,java)