maven依赖冲突解决 maven
程序员文章站
2024-02-11 17:46:34
...
用maven管理库依赖,有个好处就是连同库的依赖的全部jar文件一起下载,免去手工添加的麻烦,但同时也带来了同一个jar会被下载了不同版本的问题。
当发生版本冲突时,首先要定位冲突的jar包,其次通过<exclusions>排除冲突的依赖。
一、定位冲突的jar包
1、编译项目,当项目运行报错时,根据错误信息,寻找报错的依赖。
2、解压编译好的jar包或者war包,在lib文件夹下,找到相同jar包的不同版本。
如图,找到冲突的jar包asm。
二、找到引入冲突jar包的依赖
接下要找到是哪个<dependecy>引入的不同版本的asm。有两种方式:
1、使用命令
2、如果IDE使用的intellij Idea,可以在pom文件中,生成依赖树的可视化视图寻找冲突。
三、解决冲突
在pom的配置里用<exclusion>来排除一些不需要同时下载的依赖jar
重新编译,冲突解决。
参考资料:
当发生版本冲突时,首先要定位冲突的jar包,其次通过<exclusions>排除冲突的依赖。
一、定位冲突的jar包
1、编译项目,当项目运行报错时,根据错误信息,寻找报错的依赖。
2、解压编译好的jar包或者war包,在lib文件夹下,找到相同jar包的不同版本。
如图,找到冲突的jar包asm。
二、找到引入冲突jar包的依赖
接下要找到是哪个<dependecy>引入的不同版本的asm。有两种方式:
1、使用命令
mvn dependency:tree >tree.txt,在生成的文件中搜索ams
2、如果IDE使用的intellij Idea,可以在pom文件中,生成依赖树的可视化视图寻找冲突。
三、解决冲突
在pom的配置里用<exclusion>来排除一些不需要同时下载的依赖jar
<!-- hibernate --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>3.6.7.Final</version> <exclusions> <exclusion> <groupId>asm</groupId> <artifactId>asm</artifactId> </exclusion> <exclusion> <groupId>javassist</groupId> <artifactId>javassist</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>3.6.7.Final</version> <exclusions> <exclusion> <groupId>asm</groupId> <artifactId>asm</artifactId> </exclusion> <exclusion> <groupId>javassist</groupId> <artifactId>javassist</artifactId> </exclusion> </exclusions> </dependency>
重新编译,冲突解决。
参考资料:
引用
http://blog.csdn.net/rocklee/article/details/51692054
引用
http://www.cnblogs.com/dingyingsi/p/3725340.html
推荐阅读
-
maven依赖冲突解决 maven
-
Maven学习笔记(三)——*仓库与依赖管理篇
-
maven配置生成java doc文档中文乱码问题解决方案
-
解决Maven报Plugin execution not covered by lifecycle configuration
-
Maven系列(八)assembly打包-程序和依赖jar包分开化+多环境
-
maven项目打包时将依赖的jar包和项目代码分离
-
Maven项目build时出现No compiler is provided in this environment的解决方法
-
理解 maven 多模块项目依赖关系
-
使用maven命令生成flink项目出现问题及解决办法
-
在Linux下使用nexus3搭建Maven私服并且使用Maven进行jar包上传以及依赖下载