中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

maven 依賴樹怎么查看以及沖突解決

發布時間:2021-07-12 10:38:36 來源:億速云 閱讀:1102 作者:chen 欄目:編程語言

本篇內容主要講解“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進行排除,如:

<dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase-common</artifactId>
        <version>1.1.2</version>
        <exclusions>
            <exclusion>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
            </exclusion> 
    </dependency>

4. shade解決沖突

但是還有時候你會遇到更糟糕的情況,不同包依賴的包互相沖突,并且這個沖突包的兩個版本不可兼容,如guava。如我遇到的org.apache.hbase和spring的依賴guava沖突,但是他們依賴不同版本guava,不可替換,此時好的辦法就是使用shade版本,如:

<!-- https://mvnrepository.com/artifact/org.apache.hbase/hbase-shaded-client -->
        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-shaded-client</artifactId>
            <version>2.4.1</version>
        </dependency>

這個shade包可以去maven官網下載,通常官方打的依賴包還是可靠的。 shade原理: 為什么用shade版本就可以了?其實很簡單,就是修改其中任意一方的依賴路徑來解決的,其實就是package值。如Gson類的package正常值是package com.google.gson;,在hbase-shaded-client中就是package org.apache.hbase.thirdparty.com.google.gson;,如果package不同,自然不會有沖突了。

到此,相信大家對“maven 依賴樹怎么查看以及沖突解決”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长白| 嵩明县| 项城市| 门头沟区| 海伦市| 上蔡县| 韶关市| 繁昌县| 开化县| 家居| 开平市| 新建县| 拉萨市| 宁津县| 河东区| 中牟县| 阿瓦提县| 高邮市| 焦作市| 双桥区| 萨迦县| 渭南市| 图木舒克市| 克东县| 大洼县| 横峰县| 佳木斯市| 星子县| 卢龙县| 麦盖提县| 抚顺市| 兴安盟| 中卫市| 娄底市| 曲阳县| 科尔| 龙口市| 临潭县| 西昌市| 武邑县| 大邑县|