maven解决包冲突

前言

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

问题

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

排查问题

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

查找冲突

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

图形预览

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

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

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这个编辑器还是非常强大的。今天这篇文章主要是对我的一个解决冲突的一个思路的回顾。

最后

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

相关推荐
小Ti客栈3 小时前
Spring Boot 集成 Springdoc-OpenAPI 与 Knife4j实现接口文档与可视化调试
java·spring boot·后端
Ai拆代码的曹操3 小时前
Spring 事务 REQUIRES_NEW 嵌套调用:连接池翻倍的秘密
java·后端·spring
动恰客流统计4 小时前
ReID边缘计算视觉统计:餐饮店客流增长的数字化破局路径
java·大数据·运维·人工智能
Ivanqhz5 小时前
Rust &‘static str浅析
java·前端·javascript·rust
weixin_419658317 小时前
Docker 搭建 Jenkins 服务
java·docker·jenkins
captain3768 小时前
多线程线程安全问题
java·java-ee
CoderYanger8 小时前
A.每日一题:1979. 找出数组的最大公约数
java·程序人生·算法·leetcode·面试·职场和发展·学习方法
灵极海8 小时前
LangChain4j RAG 实战完整指南:从入门到踩坑
java·langchain
yaoxin5211238 小时前
476. Java 反射 - 调用方法
java·开发语言
Ivanqhz9 小时前
Rust Lazy浅析
java·javascript·rust