Sbt 排除依賴衝突詳細解析

2021-08-21 00:11:33 字數 3246 閱讀 7435

1.sbt 依賴樹

參考:

dependencygraph sbt plugin

安裝外掛程式

建立檔案:./.sbt/1.0/plugins/plugins.sbt

新增內容:addsbtplugin(「net.virtual-void」 % 「sbt-dependency-graph」 % 「0.9.0」)

外掛程式啟動

sbt:graphplatform> dependencytree

其他命令:#main-tasks

問題:

專案中要的是hbase1.2.6版本的包,確出現了hbase1.1.1,原因是hive-jdbc和hive-cli間接依賴hbase1.1.1

sbt的依賴包如下所示:

"org.apache.hbase" % "hbase-client" % "1.2.6",

"org.apache.hbase" % "hbase-common" % "1.2.6",

"org.apache.hbase" % "hbase-server" % "1.2.6",

"org.apache.hbase" % "hbase-protocol" % "1.2.6",

"org.apache.hive" % "hive-jdbc" % "2.3.2",

"org.apache.hive" % "hive-cli" % "2.3.2",

專案中依賴截圖如下所示:

解決依賴:

1)使用依賴樹:sbt->project project_name->dependencytree

2)檢視相互依賴:sbt->project project_name->whatdependson org.apache.hbase hbase-annotations 1.1.1

依賴從下往上看「com.jd.jr:graph_importer_2.11:1.0-snapshot」依賴–>「org.apache.hive:hive-cli:2.3.2」依賴–>「org.apache.hive:hive-service:2.3.2」依賴–>「org.apache.hive:hive-llap-server:2.3.2」依賴–>「org.apache.hbase:hbase-server:1.1.1」

找到問題了,需要在「org.apache.hive:hive-cli:2.3.2」排除「org.apache.hbase:hbase-server:1.1.1」

3)其餘三個不需要的jar包參考第二步

sbt依賴的處理後展示

"org.apache.hbase" % "hbase-client" % "1.2.6",

"org.apache.hbase" % "hbase-common" % "1.2.6",

"org.apache.hbase" % "hbase-server" % "1.2.6",

"org.apache.hbase" % "hbase-protocol" % "1.2.6",

"org.apache.hive" % "hive-jdbc" % "2.3.2"

exclude("org.apache.hbase", "hbase-protocol")

exclude("org.apache.hbase", "hbase-client")

exclude("org.apache.hbase", "hbase-common")

exclude("org.apache.hbase", "hbase-service"),

"org.apache.hive" % "hive-cli" % "2.3.2"

exclude("org.apache.hbase", "hbase-protocol")

exclude("org.apache.hbase", "hbase-client")

exclude("org.apache.hbase", "hbase-common")

exclude("org.apache.hbase", "hbase-service"),

4)sbt中先「clean」再「compile」.(其中compile包括了update)

專案中依賴截圖如下所示:

5)sbt依賴樹輸出到本地檔案命令

graph_importer是專案名稱

sbt "project graph_importer" dependencytree >> dependencytree.txt

直接依賴,間接依賴,可選依賴,排除依賴,依賴衝突

在本工程pom檔案中配置的依賴,稱為本工程的直接依賴。本工程pom配置了依賴a,a又依賴b,則本工程也依賴b,b為本工程的間接依賴。在依賴中配置true false 是否向下傳遞,如果配置為true,則別人依賴了本專案,被配置的不會在別人的專案中依賴到。所包含座標 排除依賴包中所包含的依賴關係 不需...

Gradle依賴排除

在引用依賴時經常會有這樣的問題 某些間接引用的依賴項是不需要的 產生了依賴衝突。此時需要排除一些依賴。下面的內容介紹了幾種在gradle中排除依賴的方式。在dependency中排除 dependencies compile com.zhyea ar4j 1.0 excluding a partic...

Gradle依賴排除

在引用依賴時經常會有這樣的問題 某些間接引用的依賴項是不需要的 產生了依賴衝突。此時需要排除一些依賴。下面的內容介紹了幾種在gradle中排除依賴的方式。在dependency中排除 dependencies compile com.zhyea ar4j 1.0 excluding a partic...