您好,登錄后才能下訂單哦!
本篇內容主要講解“maven 依賴樹怎么查看以及沖突解決”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“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
會出現類似的依賴結構。上面就是一個依賴樹結構,并有層級關系,我們可以看出他們的依賴父子關系。
** 其中+-
和\-
并無實際含義,只是方便展示查看。 **
verbose 的中文翻譯為冗余的意思,這個命令就是查看更加具體和冗余的依賴樹信息。 使用示例:
dependency:tree -Dverbose=true
這個參數就是查看你感興趣的依賴,支持正則表示式。如我只想查看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
默認的依賴樹輸出是到控制臺的,你可以重定向到一個你指定的文件。如:
dependency:tree -Dincludes=*hadoop* -DoutputFile=你指定的文件
這樣方便后續查看。
以解決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>
但是還有時候你會遇到更糟糕的情況,不同包依賴的包互相沖突,并且這個沖突包的兩個版本不可兼容,如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 依賴樹怎么查看以及沖突解決”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。