如何详细排查并解决Maven JAR包冲突问题?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1102个文字,预计阅读时间需要5分钟。
前言:写这篇文章的初衷是因为今天在使用mvn dependency:tree命令时,突然想起一年前面试阿里的那一道面试题。面试题是这样的:假设线上发生JAR包冲突,应该如何排查?
我当时回答是:IDEA有一个依赖树功能,可以直观地查看项目的依赖关系。
下面,我将详细介绍如何使用IDEA的依赖树功能来排查JAR包冲突。
前言
写这篇文章的初衷是因为今天在使用mvn dependency:tree命令时,突然想起一年前面试阿里的一道面试题。面试题是说假设线上发生JAR包冲突,应该怎么排查?我那时候的回答是IDEA有个Maven Helper的插件,可以帮忙分析依赖冲突,然后还有一种办法是如果一个类import的时候提示两个地方可导入,那就说明有冲突。现在回头想想确实太不专业了,以下是一次JAR包冲突的一个比较正规的流程,是通过整理几篇博客后总结的希望对大家也有帮助,如果有错误的地方也欢迎指出
GitHub地址:github.com/RobertoHuang
JAR冲突产生的原因
Pom.xml / \ B C / \ / \ X Y X M
在以上依赖关系中项目除了会引入B、C还会引入X、Y、M的依赖包,但是如果B依赖的X版本会1.0而C依赖的X版本为2.0时,那最后项目使用的到底是X的1.0版本还是2.0版本就无法确定了。
本文共计1102个文字,预计阅读时间需要5分钟。
前言:写这篇文章的初衷是因为今天在使用mvn dependency:tree命令时,突然想起一年前面试阿里的那一道面试题。面试题是这样的:假设线上发生JAR包冲突,应该如何排查?
我当时回答是:IDEA有一个依赖树功能,可以直观地查看项目的依赖关系。
下面,我将详细介绍如何使用IDEA的依赖树功能来排查JAR包冲突。
前言
写这篇文章的初衷是因为今天在使用mvn dependency:tree命令时,突然想起一年前面试阿里的一道面试题。面试题是说假设线上发生JAR包冲突,应该怎么排查?我那时候的回答是IDEA有个Maven Helper的插件,可以帮忙分析依赖冲突,然后还有一种办法是如果一个类import的时候提示两个地方可导入,那就说明有冲突。现在回头想想确实太不专业了,以下是一次JAR包冲突的一个比较正规的流程,是通过整理几篇博客后总结的希望对大家也有帮助,如果有错误的地方也欢迎指出
GitHub地址:github.com/RobertoHuang
JAR冲突产生的原因
Pom.xml / \ B C / \ / \ X Y X M
在以上依赖关系中项目除了会引入B、C还会引入X、Y、M的依赖包,但是如果B依赖的X版本会1.0而C依赖的X版本为2.0时,那最后项目使用的到底是X的1.0版本还是2.0版本就无法确定了。

