当发生版本冲突时,首先要定位冲突的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