Maven 指令 mvn:dependency:tree 查看依赖Jar 的关系

   在我们日常工作的时候,经常需要遇到 maven 的 包冲突的情况,

这样我们就需要 利用 maven 指令去查看包的冲突的问题。

主要用到的指令为  mvn dependency:tree ,在 pom.xml 所在的目录下执行

需求场景 :guava 包冲突,需要手动解决 !

示例  pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>JD</groupId>
    <artifactId>JD_test</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <spring.version>4.3.8.RELEASE</spring.version>
    </properties>

    <dependencies>


        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
        <!--spring核心依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--spring ioc依赖 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--spring 容器扩展依赖 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--spring 面向切面相关依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--spring 单元测试相关包-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
            <scope>provided</scope>
        </dependency>

        <!--mysql 驱动包-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>6.0.6</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.apache.hive/hive-jdbc -->
        <dependency>
            <groupId>org.apache.hive</groupId>
            <artifactId>hive-jdbc</artifactId>
            <version>2.3.2</version>
            <!--<exclusions>-->
                <!--<exclusion>-->
                    <!--<groupId>com.google.guava</groupId>-->
                    <!--<artifactId>guava</artifactId>-->
                <!--</exclusion>-->
            <!--</exclusions>-->
        </dependency>

        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>2.7.3</version>
            <!--<exclusions>-->
                <!--<exclusion>-->
                    <!--<groupId>com.google.guava</groupId>-->
                    <!--<artifactId>guava</artifactId>-->
                <!--</exclusion>-->
            <!--</exclusions>-->
        </dependency>

        <dependency>
            <groupId>com.jd.jars</groupId>
            <artifactId>jd-xdata</artifactId>
            <version>1.0.0</version>
        </dependency>

    </dependencies>

    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <descriptor>src/main/assembly/assembly.xml</descriptor>
                    <encoding>UTF-8</encoding>
                </configuration>
                <!--mvn assembly:assembly -->
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>utf-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

=============================

查看部分依赖

 mvn dependency:tree  

会查看到二级层级的依赖关系 (并不能看到所有的依赖关系):

执行指令:

 mvn dependency:tree  

输出结果(部分)

$ mvn dependency:tree
[[1;34mINFO[m] Scanning for projects...
[[1;34mINFO[m]
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
[[1;34mINFO[m] [1mBuilding JD_test 1.0-SNAPSHOT[m
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
[[1;34mINFO[m]
[[1;34mINFO[m] [1m--- [0;32mmaven-dependency-plugin:2.8:tree[m [1m(default-cli)[m @ [36mJD_test[0;1m ---[m
[[1;34mINFO[m] JD:JD_test:jar:1.0-SNAPSHOT
[[1;34mINFO[m] +- junit:junit:jar:4.11:test
[[1;34mINFO[m] |  \- org.hamcrest:hamcrest-core:jar:1.3:test
[[1;34mINFO[m] +- org.springframework:spring-core:jar:4.3.8.RELEASE:compile
[[1;34mINFO[m] |  \- commons-logging:commons-logging:jar:1.2:compile
[[1;34mINFO[m] +- org.springframework:spring-beans:jar:4.3.8.RELEASE:compile
[[1;34mINFO[m] +- org.springframework:spring-context-support:jar:4.3.8.RELEASE:compile
[[1;34mINFO[m] |  \- org.springframework:spring-context:jar:4.3.8.RELEASE:compile
[[1;34mINFO[m] |     \- org.springframework:spring-expression:jar:4.3.8.RELEASE:compile
[[1;34mINFO[m] +- org.springframework:spring-aop:jar:4.3.8.RELEASE:compile
[[1;34mINFO[m] +- org.springframework:spring-aspects:jar:4.3.8.RELEASE:compile
[[1;34mINFO[m] |  \- org.aspectj:aspectjweaver:jar:1.8.9:compile
[[1;34mINFO[m] +- org.springframework:spring-jdbc:jar:4.3.8.RELEASE:compile
[[1;34mINFO[m] |  \- org.springframework:spring-tx:jar:4.3.8.RELEASE:compile
[[1;34mINFO[m] +- org.springframework:spring-test:jar:4.3.8.RELEASE:provided
[[1;34mINFO[m] +- mysql:mysql-connector-java:jar:6.0.6:compile
[[1;34mINFO[m] +- org.apache.hive:hive-jdbc:jar:2.3.2:compile
[[1;34mINFO[m] |  +- org.apache.hive:hive-common:jar:2.3.2:compile
[[1;34mINFO[m] |  |  +- org.apache.hive:hive-storage-api:jar:2.4.0:compile
[[1;34mINFO[m] |  |  +- org.apache.commons:commons-lang3:jar:3.1:compile
[[1;34mINFO[m] |  |  +- org.apache.orc:orc-core:jar:1.3.3:compile
[[1;34mINFO[m] |  |  |  \- io.airlift:aircompressor:jar:0.3:compile
[[1;34mINFO[m] |  |  +- jline:jline:jar:2.12:compile

注意: 

其中

“+-”符号表示该包后面还有其它依赖包,

“\-”表示该包后面不再依赖其它jar包

========================

查看完整依赖

查看完整的依赖关系,需要增加参数 -Dverbose

指令如下:

mvn dependency:tree  -Dverbose

输出结果(部分)

$ mvn dependency:tree -Dverbose
[[1;34mINFO[m] Scanning for projects...
[[1;34mINFO[m]
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
[[1;34mINFO[m] [1mBuilding JD_test 1.0-SNAPSHOT[m
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
[[1;34mINFO[m]
[[1;34mINFO[m] [1m--- [0;32mmaven-dependency-plugin:2.8:tree[m [1m(default-cli)[m @ [36mJD_test[0;1m ---[m
[[1;34mINFO[m] JD:JD_test:jar:1.0-SNAPSHOT
[[1;34mINFO[m] +- junit:junit:jar:4.11:test (scope not updated to compile)
[[1;34mINFO[m] |  \- org.hamcrest:hamcrest-core:jar:1.3:test
[[1;34mINFO[m] +- org.springframework:spring-core:jar:4.3.8.RELEASE:compile
[[1;34mINFO[m] |  \- commons-logging:commons-logging:jar:1.2:compile
[[1;34mINFO[m] +- org.springframework:spring-beans:jar:4.3.8.RELEASE:compile
[[1;34mINFO[m] |  \- (org.springframework:spring-core:jar:4.3.8.RELEASE:compile - omitted for duplicate)
[[1;34mINFO[m] +- org.springframework:spring-context-support:jar:4.3.8.RELEASE:compile
[[1;34mINFO[m] |  +- (org.springframework:spring-beans:jar:4.3.8.RELEASE:compile - omitted for duplicate)
[[1;34mINFO[m] |  +- org.springframework:spring-context:jar:4.3.8.RELEASE:compile
[[1;34mINFO[m] |  |  +- (org.springframework:spring-aop:jar:4.3.8.RELEASE:compile - omitted for duplicate)
[[1;34mINFO[m] |  |  +- (org.springframework:spring-beans:jar:4.3.8.RELEASE:compile - omitted for duplicate)
[[1;34mINFO[m] |  |  +- (org.springframework:spring-core:jar:4.3.8.RELEASE:compile - omitted for duplicate)
[[1;34mINFO[m] |  |  \- org.springframework:spring-expression:jar:4.3.8.RELEASE:compile
[[1;34mINFO[m] |  |     \- (org.springframework:spring-core:jar:4.3.8.RELEASE:compile - omitted for duplicate)
[[1;34mINFO[m] |  \- (org.springframework:spring-core:jar:4.3.8.RELEASE:compile - omitted for duplicate)

===================================================

查看感兴趣的依赖部分

通常我们只对产生冲突的部分感兴趣,这个时候我们就要对信息进行提取:

需要增加以下参数

    -Dincludes=*guava*

注意:

      includes 支持通配符的形式

执行指令: 

    $ mvn dependency:tree -Dverbose -Dincludes=*guava*

输出结果(全部)

$ mvn dependency:tree -Dverbose -Dincludes=*guava*
[[1;34mINFO[m] Scanning for projects...
[[1;34mINFO[m]
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
[[1;34mINFO[m] [1mBuilding JD_test 1.0-SNAPSHOT[m
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
[[1;34mINFO[m]
[[1;34mINFO[m] [1m--- [0;32mmaven-dependency-plugin:2.8:tree[m [1m(default-cli)[m @ [36mJD_test[0;1m ---[m
[[1;34mINFO[m] JD:JD_test:jar:1.0-SNAPSHOT
[[1;34mINFO[m] +- org.apache.hive:hive-jdbc:jar:2.3.2:compile
[[1;34mINFO[m] |  +- org.apache.hive:hive-service:jar:2.3.2:compile
[[1;34mINFO[m] |  |  \- org.apache.hive:hive-llap-server:jar:2.3.2:compile
[[1;34mINFO[m] |  |     +- org.apache.hive:hive-llap-client:jar:2.3.2:compile
[[1;34mINFO[m] |  |     |  \- org.apache.curator:apache-curator:pom:2.7.1:compile
[[1;34mINFO[m] |  |     |     \- (com.google.guava:guava:jar:16.0.1:compile - omitted for conflict with 14.0.1)
[[1;34mINFO[m] |  |     +- org.apache.slider:slider-core:jar:0.90.2-incubating:compile
[[1;34mINFO[m] |  |     |  \- (com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)
[[1;34mINFO[m] |  |     +- org.apache.hbase:hbase-hadoop2-compat:jar:1.1.1:compile
[[1;34mINFO[m] |  |     |  \- (com.google.guava:guava:jar:12.0.1:compile - omitted for conflict with 14.0.1)
[[1;34mINFO[m] |  |     +- org.apache.hbase:hbase-server:jar:1.1.1:compile
[[1;34mINFO[m] |  |     |  +- org.apache.hbase:hbase-procedure:jar:1.1.1:compile
[[1;34mINFO[m] |  |     |  |  +- org.apache.hbase:hbase-common:jar:tests:1.1.1:compile
[[1;34mINFO[m] |  |     |  |  |  \- (com.google.guava:guava:jar:12.0.1:compile - omitted for conflict with 14.0.1)
[[1;34mINFO[m] |  |     |  |  \- (com.google.guava:guava:jar:12.0.1:compile - omitted for conflict with 14.0.1)
[[1;34mINFO[m] |  |     |  +- org.apache.hbase:hbase-prefix-tree:jar:1.1.1:runtime
[[1;34mINFO[m] |  |     |  |  \- (com.google.guava:guava:jar:12.0.1:runtime - omitted for conflict with 14.0.1)
[[1;34mINFO[m] |  |     |  \- (com.google.guava:guava:jar:12.0.1:compile - omitted for conflict with 14.0.1)
[[1;34mINFO[m] |  |     \- org.apache.hbase:hbase-common:jar:1.1.1:compile
[[1;34mINFO[m] |  |        \- (com.google.guava:guava:jar:12.0.1:compile - omitted for conflict with 14.0.1)
[[1;34mINFO[m] |  +- org.apache.hive:hive-metastore:jar:2.3.2:compile
[[1;34mINFO[m] |  |  +- (com.google.guava:guava:jar:14.0.1:compile - omitted for conflict with 11.0.2)
[[1;34mINFO[m] |  |  +- org.apache.hbase:hbase-client:jar:1.1.1:compile
[[1;34mINFO[m] |  |  |  +- (com.google.guava:guava:jar:12.0.1:compile - omitted for conflict with 14.0.1)
[[1;34mINFO[m] |  |  |  \- org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.5.1:compile
[[1;34mINFO[m] |  |  |     \- org.apache.hadoop:hadoop-yarn-common:jar:2.5.1:compile
[[1;34mINFO[m] |  |  |        \- (com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)
[[1;34mINFO[m] |  |  +- com.jolbox:bonecp:jar:0.8.0.RELEASE:compile
[[1;34mINFO[m] |  |  |  \- (com.google.guava:guava:jar:15.0:compile - omitted for conflict with 14.0.1)
[[1;34mINFO[m] |  |  \- co.cask.tephra:tephra-core:jar:0.6.0:compile
[[1;34mINFO[m] |  |     +- (com.google.guava:guava:jar:13.0.1:compile - omitted for conflict with 14.0.1)
[[1;34mINFO[m] |  |     +- org.apache.twill:twill-core:jar:0.6.0-incubating:compile
[[1;34mINFO[m] |  |     |  \- (com.google.guava:guava:jar:13.0.1:compile - omitted for conflict with 14.0.1)
[[1;34mINFO[m] |  |     \- org.apache.twill:twill-zookeeper:jar:0.6.0-incubating:compile
[[1;34mINFO[m] |  |        \- (com.google.guava:guava:jar:13.0.1:compile - omitted for conflict with 14.0.1)
[[1;34mINFO[m] |  +- org.apache.hive:hive-shims:jar:2.3.2:compile
[[1;34mINFO[m] |  |  +- org.apache.hive.shims:hive-shims-common:jar:2.3.2:compile
[[1;34mINFO[m] |  |  |  \- (com.google.guava:guava:jar:14.0.1:compile - omitted for duplicate)
[[1;34mINFO[m] |  |  \- org.apache.hive.shims:hive-shims-0.23:jar:2.3.2:runtime
[[1;34mINFO[m] |  |     \- org.apache.hadoop:hadoop-yarn-server-resourcemanager:jar:2.7.2:runtime
[[1;34mINFO[m] |  |        +- (com.google.guava:guava:jar:11.0.2:runtime - omitted for conflict with 14.0.1)
[[1;34mINFO[m] |  |        +- org.apache.hadoop:hadoop-yarn-server-applicationhistoryservice:jar:2.7.2:runtime
[[1;34mINFO[m] |  |        |  \- (com.google.guava:guava:jar:11.0.2:runtime - omitted for conflict with 14.0.1)
[[1;34mINFO[m] |  |        \- org.apache.hadoop:hadoop-yarn-server-web-proxy:jar:2.7.2:runtime
[[1;34mINFO[m] |  |           \- (com.google.guava:guava:jar:11.0.2:runtime - omitted for conflict with 14.0.1)
[[1;34mINFO[m] |  \- org.apache.curator:curator-framework:jar:2.7.1:compile
[[1;34mINFO[m] |     \- (com.google.guava:guava:jar:16.0.1:compile - omitted for conflict with 14.0.1)
[[1;34mINFO[m] \- org.apache.hadoop:hadoop-common:jar:2.7.3:compile
[[1;34mINFO[m]    +- com.google.guava:guava:jar:11.0.2:compile
[[1;34mINFO[m]    +- org.apache.curator:curator-client:jar:2.7.1:compile
[[1;34mINFO[m]    |  \- (com.google.guava:guava:jar:16.0.1:compile - omitted for conflict with 11.0.2)
[[1;34mINFO[m]    \- org.apache.curator:curator-recipes:jar:2.7.1:compile
[[1;34mINFO[m]       \- (com.google.guava:guava:jar:16.0.1:compile - omitted for conflict with 11.0.2)
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
[[1;34mINFO[m] [1;32mBUILD SUCCESS[m
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
[[1;34mINFO[m] Total time: 7.939 s
[[1;34mINFO[m] Finished at: 2018-08-13T18:02:41+08:00
[[1;34mINFO[m] Final Memory: 45M/1001M
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m

==========================================

一些其他的参数 :

-Dexcludes =??   排除某些不感兴趣的部分  经测试,无效  

猜你喜欢

转载自blog.csdn.net/u010003835/article/details/81633093