[英]How to find dependency conflicts in 3rd party libraries
我正在尋找一種在 3rd 方庫中查找依賴沖突的方法。 我知道mvn dependency:tree
,它的-Dverbose
和-Dincludes
選項。 這很好用,但有幾個缺點:
pom.xml
文件。 這是一種有點迂回的方式,並且對於快速查看幾個庫的依賴關系來說很乏味。dependency:tree
下載所有依賴關系,對於大型依賴關系圖,這可能會很慢並且會消耗大量帶寬。dependency:tree -Dverbose
確實顯示了沖突,但它非常冗長,因為它還顯示了所有非沖突的依賴項。 Coursier依賴解析器的 CLI 可以做到這一點。 例如,要在com.bynder:bynder-java-sdk:2.2.8
中查找依賴沖突,您可以使用帶有--conflict
標志的 Coursier 的resolve
命令:
$ cs resolve --conflicts com.bynder:bynder-java-sdk:2.2.8
org.jetbrains.kotlin:kotlin-stdlib-common:1.4.10 was selected, but
com.squareup.okio:okio:2.8.0 wanted version 1.4.0
io.reactivex.rxjava2:rxjava:2.2.20 was selected, but
com.squareup.retrofit2:adapter-rxjava2:2.9.0 wanted version 2.0.0
com.squareup.okhttp3:okhttp:4.9.0 was selected, but
com.squareup.retrofit2:retrofit:2.9.0 wanted version 3.14.9
org.jetbrains.kotlin:kotlin-stdlib:1.4.10 was selected, but
com.squareup.okio:okio:2.8.0 wanted version 1.4.0
這會輸出一個沖突列表,僅此而已。 除了元數據外,沒有下載任何工件,整個過程非常快。
要進一步探索例如com.squareup.okhttp3:okhttp
上的沖突來自何處,您可以運行
$ cs resolve com.bynder:bynder-java-sdk:2.2.8 --what-depends-on com.squareup.okhttp3:okhttp
Result:
└─ com.squareup.okhttp3:okhttp:4.9.0
├─ com.squareup.okhttp3:logging-interceptor:4.9.0
│ └─ com.bynder:bynder-java-sdk:2.2.8
└─ com.squareup.retrofit2:retrofit:2.9.0 com.squareup.okhttp3:okhttp:3.14.9 -> 4.9.0
├─ com.bynder:bynder-java-sdk:2.2.8
├─ com.squareup.retrofit2:adapter-rxjava2:2.9.0
│ └─ com.bynder:bynder-java-sdk:2.2.8
└─ com.squareup.retrofit2:converter-gson:2.9.0
└─ com.bynder:bynder-java-sdk:2.2.8
output 是一個反向依賴樹,顯示了依賴於com.squareup.okhttp3:okhttp
的所有子樹。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.