maven 检查jar依赖冲突和版本冲突 以及解决

来源:互联网 发布:淘宝达人怎么修改昵称 编辑:程序博客网 时间:2024/05/20 05:03

问题描述:


          项目中用到dubbo实现分布式远程调用服务,整合dubbo的时候,遇到一个Spring的错误,NoSuchMethodError的问题。由于导入了不同版本的jar包造成的。就是说,当我发布了一版2.0jar的时候里面有个我新写的方法 adduser,但是1.0里面没有,pom没有及时更新jar,这样就会有NoSuchMethodError。我们怎么知道是否是jar包冲突的问题呢,可以使用maven命令来查看。


问题解决:


mvn dependency:tree 

         可以看到dubbo包依赖了哪些包,里面引用了Spring的包,我们项目用的是ssm框架,所以会引用spring4.2.4的包,这样spring版本就出现了冲突。


去除默认引入的spring即可。


<!-- dubbo相关 --><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>${dubbo.version}</version><exclusions><exclusion><groupId>org.springframework</groupId><artifactId>spring</artifactId></exclusion></exclusions></dependency>


         在项目发布的时候,一般都需要进行依赖冲突检查或者重复类的检查,上面tree命令只能检查jar依赖的冲突,不能看到所有的类的依赖关系,还有下面这个命令 enforcer:enforce 是用来检查重复类的。


mvn -U clean package -Dmaven.test.skip=true enforcer:enforce -DcheckDeployRelease_skip=true -Denforcer.skip=false


总结:

      

            maven不仅是构建工具,它还是依赖管理工具和项目管理工具,提供了中央仓库,能够帮我们自动下载构件。有很多命令需要我们去学习。在实践中多多总结经验。




原创粉丝点击