我正在寻找一种在第三方库中查找依赖冲突的方法。我知道mvn dependency:tree、它的-Dverbose和-Dincludes选项。这很好,但有几个缺点:
pom.xml文件。这是一种有点迂回的方式,而且对于快速查看几个库的依赖关系来说也很繁琐。dependency:tree下载所有依赖项,这可能是缓慢的,并消耗了大量的带宽对大型依赖关系图。dependency:tree -Dverbose确实显示了冲突,但它非常冗长,因为它还显示了所有非冲突的依赖项。发布于 2021-02-18 11:24:13
考西尔依赖项解析器的CLI可以做到这一点。例如,要在com.bynder:bynder-java-sdk:2.2.8中查找依赖冲突,可以使用Coursier的resolve命令和--conflict标志:
$ 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输出是一个逆依赖树,显示依赖于com.squareup.okhttp3:okhttp的所有子树。
https://stackoverflow.com/questions/66258985
复制相似问题