maven冲突解决

作者: _li_ | 来源:发表于2016-10-25 21:26 被阅读3619次

    主要目的是升级现有的jar包,排除传递依赖引起的冲突

    maven 命令

    mvn dependency tree

    mvn dependency:tree命令可以查看当前项目的依赖关系。可以将当前POM的依赖关系按照树形结构展开。

    [INFO] +- org.springframework:spring-context:jar:4.2.8.RELEASE:compile
    [INFO] |  +- org.springframework:spring-aop:jar:4.2.8.RELEASE:compile
    [INFO] |  |  \- aopalliance:aopalliance:jar:1.0:compile
    [INFO] |  +- org.springframework:spring-beans:jar:4.2.8.RELEASE:compile
    [INFO] |  \- org.springframework:spring-expression:jar:4.2.8.RELEASE:compile
    ...
    

    上述树形结构里,\-表示当前父节点最后的子节点。

    –Dverbose

    加上这个参数,可以将当前所有的依赖关系都展示出来,包括来自不同处的依赖项。

    [INFO] +- org.springframework:spring-context-support:jar:4.2.8.RELEASE:compile
    [INFO] |  +- (org.springframework:spring-beans:jar:4.2.8.RELEASE:compile - omitted for duplicate)
    [INFO] |  +- (org.springframework:spring-context:jar:4.1.1.RELEASE:compile - version managed from 4.2.8.RELEASE; omitted for conflict with 4.2.8.RELEASE)
    [INFO] |  \- (org.springframework:spring-core:jar:4.1.1.RELEASE:compile - version managed from 4.2.8.RELEASE; omitted for conflict with 4.2.8.RELEASE)
    ...
    

    –Dincludes

    -Dincludes 可以进行参数过滤,如果需要查询spring相关的依赖,可以
    mvn dependency:tree -Dverbose -Dincludes=*spring*:*spring*

    [INFO] +- org.springframework:spring-context:jar:4.2.8.RELEASE:compile
    [INFO] |  +- org.springframework:spring-aop:jar:4.2.8.RELEASE:compile
    [INFO] |  |  +- (org.springframework:spring-beans:jar:4.2.8.RELEASE:compile - omitted for duplicate)
    [INFO] |  |  \- (org.springframework:spring-core:jar:4.1.1.RELEASE:compile - version managed from 4.2.8.RELEASE; omitted for duplicate)
    [INFO] |  +- org.springframework:spring-beans:jar:4.2.8.RELEASE:compile
    [INFO] |  |  \- (org.springframework:spring-core:jar:4.1.1.RELEASE:compile - version managed from 4.2.8.RELEASE; omitted for duplicate)
    ...
    

    当然,可以将输出结果导入到文本中。只需要在命令后加入”>a.txt”即可。

    mvn help:effective-pom

    上述命令可以将当前项目自己的POM已经从父类中继承的POM内容输出,可以输出到文本中。
    mvn help:effective-pom>a.txt

    mvn dependency:analyze

    dependency:analyze是通过分析bytecode来输出报告。包含Used undeclared dependencies(使用但未定义的依赖项)和Unused declared dependencies(未使用但却定义的依赖项)。

    • Used undeclared dependencies
      该列表列出的是程序代码直接用到的、但并没在pom.xml里定义的依赖项。
    • Unused declared dependencies
      该列表列出的是程序代码没用到的、但在pom.xml里定义的依赖项。注意,该列表可能不准确,因为程序代码可能使用了反射技术,在运行时需要这些jar包存在。

    排除依赖

    dependency

    在dependency中,可以通过exclusions标签进行依赖排除。
    例如,排除spring

    <exclusions>
       <exclusion>
          <groupId>org.springframework</groupId>
          <artifactId>spring</artifactId>
       </exclusion>
    </exclusions>
    

    排除所有

    <exclusions>
       <exclusion>
          <groupId>*</groupId>
          <artifactId>*</artifactId>
       </exclusion>
    </exclusions>
    

    相关文章

      网友评论

      • 84e66dc4384b:排除所有用*号,我试了下,为什么不行啊

      本文标题:maven冲突解决

      本文链接:https://www.haomeiwen.com/subject/wdxduttx.html