检查maven 项目jar包依赖是否冲突及检查重复类 有更新!

  |   5 评论   |   4,342 浏览

    在项目发布的时候,一般都需要进行依赖冲突检查或者重复类的检查,这个时候我一般会使用下面的两个命令:
    mvn -U clean ``package -Dmaven.test.skip=``true enforcer:enforce -DcheckDeployRelease_skip=``true -Denforcer.skip=``false

    mvn -U dependency:tree -Dverbose

    • dependency: tree是检查版本冲突的
    • enforcer:enforce是用来检查重复类的

    简单地用 dependency:tree往往并不能查看到所有的传递依赖。不过如果你真的想要看所有的,必须得加一个 -Dverbose参数,这时就必定是最全的了。

    全是全了,但显示出来的东西太多有时候会很烦,加上 Dincludes或者 Dexcludes,就会包含或者排除你指定的依赖了, dependency:tree就会帮你过滤出来:比如:

    mvn dependency:tree -Dverbose -Dincludes=asm:asm 就会出来asm依赖包的分析信息。

    解决办法

    1)开发在本地执行此命令可以检查Jar包版本冲突:mvn -X compile dependency:tree -Dverbose >a.log,然后在a.log文件里查找 是否有"omitted for conflict with",如果有,则表示jar包有版本冲突 ;

    注意:有版本冲突的也会显示编译成功的。(mvn dependency:tree -Dverbose | grep “omitted for conflict with” )

    评论

    • tonfay @土豆 回复»

      66

    • tonfay @得到 回复»

      你怎么知道的呀?

    • 得到 回复»

      这个网页中木马了,挖矿的

    • tonfay @土豆 回复»

      ide的底层依然还是如上方式实现

    • 土豆 回复»

      重复类的还不错。但是查看版本冲突的这种方法太原始了,如果是eclipse中pom文件打开后下面中间那个标签选项卡就可以一目了然了。如果是IDEA中,需要安装maven helper插件,jar依赖也是一目了然,可以直接右键exclude掉冲突的jar。

    发表评论

    validate