在我们日常工作的时候,经常需要遇到 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 =?? 排除某些不感兴趣的部分 经测试,无效