成都网站建设设计

将想法与焦点和您一起共享

maven依赖树怎么查看以及冲突解决

本篇内容主要讲解“maven 依赖树怎么查看以及冲突解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“maven 依赖树怎么查看以及冲突解决”吧!

成都创新互联专注于新兴企业网站建设,响应式网站开发,商城系统网站开发。新兴网站建设公司,为新兴等地区提供建站服务。全流程按需定制网站,专业设计,全程项目跟踪,成都创新互联专业和态度为您提供的服务

maven 依赖树查看以及冲突解决

1. 查看依赖树

maven 依赖树怎么查看以及冲突解决

如果你使用idea可以点击上图按钮,会有一个弹出框,选择一个项目工程,使用命令:

mvn dependency:tree

[INFO] +- org.springframework:spring-webmvc:jar:4.2.2.RELEASE:compile
[INFO] |  +- org.springframework:spring-beans:jar:4.2.2.RELEASE:compile
[INFO] |  +- org.springframework:spring-context:jar:4.2.2.RELEASE:compile
[INFO] |  |  \- org.springframework:spring-aop:jar:4.2.2.RELEASE:compile
[INFO] |  |     \- aopalliance:aopalliance:jar:1.0:compile
[INFO] |  +- org.springframework:spring-core:jar:4.2.2.RELEASE:compile
[INFO] |  |  \- commons-logging:commons-logging:jar:1.2:compile
[INFO] |  +- org.springframework:spring-expression:jar:4.2.2.RELEASE:compile

会出现类似的依赖结构。上面就是一个依赖树结构,并有层级关系,我们可以看出他们的依赖父子关系。

** 其中+-\- 并无实际含义,只是方便展示查看。 **

2. 依赖树查看扩展命令

1. -Dverbose

verbose 的中文翻译为冗余的意思,这个命令就是查看更加具体和冗余的依赖树信息。 使用示例:

dependency:tree -Dverbose=true

2. -Dincludes

这个参数就是查看你感兴趣的依赖,支持正则表示式。如我只想查看hadoop相关的依赖,示例:

dependency:tree -Dincludes=*hadoop*

输出:

com.mytest.server:mytest-server:jar:1.0-SNAPSHOT
+- org.apache.hive:hive-jdbc:jar:3.1.2:compile
|  \- org.apache.hive:hive-shims:jar:3.1.2:compile
|     \- org.apache.hive.shims:hive-shims-0.23:jar:3.1.2:runtime
|        \- org.apache.hadoop:hadoop-yarn-server-resourcemanager:jar:3.1.0:runtime
|           +- org.apache.hadoop:hadoop-yarn-server-common:jar:3.1.0:compile
|           +- org.apache.hadoop:hadoop-yarn-server-applicationhistoryservice:jar:3.1.0:runtime
|           \- org.apache.hadoop:hadoop-yarn-server-web-proxy:jar:3.1.0:runtime
+- org.apache.hadoop:hadoop-common:jar:3.1.2:compile
|  +- org.apache.hadoop:hadoop-annotations:jar:3.1.2:compile
|  \- org.apache.hadoop:hadoop-auth:jar:3.1.2:compile
+- org.apache.hive:hive-exec:jar:3.1.2:compile
|  \- org.apache.hadoop:hadoop-yarn-registry:jar:3.1.0:compile
|     +- org.apache.hadoop:hadoop-yarn-api:jar:3.1.0:compile
|     \- org.apache.hadoop:hadoop-yarn-common:jar:3.1.0:compile
+- org.apache.hbase:hbase-common:jar:1.1.2:compile
|  \- org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.5.1:compile
\- org.apache.hbase:hbase-server:jar:1.1.2:compile
   +- org.apache.hadoop:hadoop-client:jar:2.5.1:compile
   |  +- org.apache.hadoop:hadoop-mapreduce-client-app:jar:2.5.1:compile
   |  |  +- org.apache.hadoop:hadoop-mapreduce-client-common:jar:2.5.1:compile
   |  |  |  \- org.apache.hadoop:hadoop-yarn-client:jar:2.5.1:compile
   |  |  \- org.apache.hadoop:hadoop-mapreduce-client-shuffle:jar:2.5.1:compile
   |  \- org.apache.hadoop:hadoop-mapreduce-client-jobclient:jar:2.5.1:compile
   \- org.apache.hadoop:hadoop-hdfs:jar:2.5.1:compile
3. -DoutputFile

默认的依赖树输出是到控制台的,你可以重定向到一个你指定的文件。如:

dependency:tree -Dincludes=*hadoop* -DoutputFile=你指定的文件

这样方便后续查看。

3. 冲突解决

以解决guava为例,查看命令可以使用-Dverbose,你可以看到多个guava版本,有很多还有提示冲突了(com.google.guava:guava:jar:16.0.1:runtime - omitted for conflict with 11.0.2)

你可以手动解决冲突,引入适配版本,然后依赖包中依赖了guava包的使用 exclusion进行排除,如:


        org.apache.hbase
        hbase-common
        1.1.2
        
            
                com.google.guava
                guava
             
    

4. shade解决冲突

但是还有时候你会遇到更糟糕的情况,不同包依赖的包互相冲突,并且这个冲突包的两个版本不可兼容,如guava。如我遇到的org.apache.hbase和spring的依赖guava冲突,但是他们依赖不同版本guava,不可替换,此时好的办法就是使用shade版本,如:


        
            org.apache.hbase
            hbase-shaded-client
            2.4.1
        

这个shade包可以去maven官网下载,通常官方打的依赖包还是可靠的。 shade原理: 为什么用shade版本就可以了?其实很简单,就是修改其中任意一方的依赖路径来解决的,其实就是package值。如Gson类的package正常值是package com.google.gson;,在hbase-shaded-client中就是package org.apache.hbase.thirdparty.com.google.gson;,如果package不同,自然不会有冲突了。

到此,相信大家对“maven 依赖树怎么查看以及冲突解决”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


分享名称:maven依赖树怎么查看以及冲突解决
分享地址:http://chengdu.cdxwcx.cn/article/jssssi.html