如何快速的解决Maven依赖冲突 如何快速的解决Maven依赖冲突

作者&投稿:池扶 (若有异议请与网页底部的电邮联系)
为什么会出现依赖冲突
首先要说明Maven的依赖管理,具体的可以参考这边 Maven学习——依赖管理 这篇文章,maven在依赖冲管理中有一下几个原则。
依赖是使用Maven坐标来定位的,而Maven坐标主要由GAV(groupId, artifactId, version)构成。如果两个相同的依赖包,如果groupId, artifactId, version不同,那么maven也认为这两个是不同的。
依赖会传递,A依赖了B,B依赖了C,那么A的依赖中就会出现B和C。
Maven对同一个groupId, artifactId的冲突仲裁,不是以version越大越保留,而是依赖路径越短越优先,然后进行保留。
依赖的scope会影响依赖的影响范围。
当出现了依赖的时候如何快速定位冲突原因
但出现了冲突的时候,比如系统出现了NoSuchMethodError,LinkageError 很有可能是你系统中出现了依赖冲突。出现冲突以后,可以按以下的步骤执行
1.确定出了问题的jar包名称。通常可以在eclipse中查找冲突的类有在哪些依赖包里面出现了。并确定实际要使用的是那个包,冲突的包有哪些。
2.通过mvn dependency:tree > tree.txt 导出全部的依赖。
3.在导出的依赖文件中,查找问题相关的jar。确定这些jar是如何被依赖进来的,是直接依赖的还是通过传递依赖引入的。
4. 找到相互冲突的并需要排除的依赖的顶级依赖,并分析冲突的原因,冲突的原因可能是以下几种:
同一个jar包但groupId, artifactId不同,这种冲突只能通过设定依赖的<exclusions> 来进行排除
需要的版本jar包依赖路径较长,这种冲突可以把想要版本的依赖直接什么在依赖中,这样路径就最短了优先级最高。
5.最后可以通过打包mvn install 来确认打出来的war包中是否有被排除的依赖。

如何快速的解决Maven依赖冲突~

补充下:如果是你IDE用的是IDEA,可以很直观的看到jar包的依赖树这个工具可以很容易的让你判断到哪个包是你需要的,具体还需要你自己去研究

1.确定出了问题的jar包名称。通常可以在eclipse中查找冲突的类有在哪些依赖包里面出现了。并确定实际要使用的是那个包,冲突的包有哪些。 2.通过mvn dependency:tree > tree.txt 导出全部的依赖。 3.在导出的依赖文件中,查找问题相关的jar。确...

Maven和lib文件夹下都引入了jar包,但是Maven刷新,lib下的jar要重新引入...
答:所以,如果使用了Maven来管理依赖,并且在`lib`文件夹下也手动引入了jar包,当你执行Maven的构建命令或刷新Maven项目时,Maven并不会自动更新`lib`文件夹下的jar包。如果存在新的版本或者依赖变动,你需要手动将最新的jar包替换到`lib`文件夹,以确保项目的依赖正确。为了避免重复引入和管理冲突,建议在...

如何解决依赖包servlet-api和容器自带servlet的jar包的冲突
答:如果你的工程是用maven管理的话,可以在commons-logging的依赖里把servlet-api-2.3去除掉,再加入你所需要的版本的servlet-api依赖。大概的例子如下:<dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.1</version> <exclusions> <exclusion> <...

什么是Maven?
答:7. 解读pom.xml:依赖关系的奥秘 理解pom.xml中的groupId、artifactId、version,以及scope、exclusions等属性,是依赖管理的基础。学会如何配置这些属性,能避免依赖冲突,确保项目的稳定运行。Maven不仅仅是工具,它是一种项目管理的理念。掌握它,你的开发效率将大幅提升。在探索Maven的道路上,保持学习的...

maven用命令怎么更新依赖包
答:maven mvn clean install -e -U -e详细异常,-U强制更新

排除aar/jar中冗余或者冲突包、类
答:引入aar的冲突无所不在,通过远程依赖maven的包可以通过 exclude 关键字搭配 module 和 group 去除某个组,没办法去除具体的类。那么如果是单独的aar包,想要排除aar下classes.jar包里的某个单独的包或者类怎么办?需要接入的jar包已经带了腾讯X5核心,当前依赖的已经包含X5核心,冲突又该如何解决呢?当...

github的库依赖不下来的解决方案
答:1、确定github的地址仓库maven { url ' https://jitpack.io' } 2、确定是否别的仓库是否有问题导致的问题

eclipse中maven依赖jar包变成了灰色怎么解决(本地仓库下载了)_百度...
答:<dependency> <groupId>io.rest-assured</groupId> <artifactId>rest-assured</artifactId> <version>3.0.1</version> <scope>test</scope><!--会发现我们自己建的类无法使用,是因为设置了只在测试时使用,用于编译和运行测试代码。不会随项目发布,删除<scope>后所有类都可使用--> 删除 <...

eclipse怎么打开maven依赖jar包
答:1先创建一个基于maven的项目,点击打开pom.xml文件 2 点击Dependencies标签页,然后点击Dependencies中的add按钮,输入我们想添加的jar包名字,就会出现下图中所示,它会把对应名称的所有版本jar包列出来 3 点击OK之后,在pom.xml会带回jar包的信息,type表示依赖包的类型,Scope表示这个依赖包的作用周期等等...

启动spring boot报错,怎么解决
答:【解决办法】需要在启动类的@EnableAutoConfiguration或@SpringBootApplication中添加exclude = {DataSourceAutoConfiguration.class},排除此类的autoconfig。启动以后就可以正常运行。【原因】这个原因是maven依赖包冲突,有重复的依赖。【Spring Boot】Spring Boot是由Pivotal团队提供的全新框架,其设计目的是...

滑板maven是什么意思?
答:开发者可以在 POM 文件中指定项目需要的各种依赖库,依赖管理器会自动下载和安装这些库文件,然后将它们集成到项目中。同时,如果依赖库有更新或版本变化,也可以很容易地在 POM 文件中进行修改。通过使用 Maven 进行依赖管理,可以避免出现依赖冲突和版本混淆等问题,减少开发者在处理依赖库上的烦琐工作。