maven依赖冲突解决

    用maven管理库依赖,有个好处就是连同库的依赖的全部jar文件一起下载,免去手工添加的麻烦,但同时也带来了同一个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





猜你喜欢

转载自sunmit1024.iteye.com/blog/2392634