繁体   English   中英

强制 gradle 不升级传递依赖

[英]Enforce gradle not to upgrade transitive dependencies

我面临 gradle(6.7.1) 自动升级传递依赖项的问题。 考虑两个父依赖项AB ,它们都使用不同版本的PICASSO作为传递依赖项

A -> com.squareup.picasso:picasso:2.5.2 

B -> com.squareup.picasso:picasso:2.71828

在构建 android 项目时,PICASSO 会自动将两者升级到2.71828 由于PICASSO API INITIALISATION对于这两个版本( 2.5.2 和 2.71828 )是不同的,因此A恰好抛出NoSuchMethodException 我如何强制 gradle 对 A 和 B 使用特定的 PICASSO 版本。

任何帮助将非常感激。

在声明传递依赖时,您可以尝试使用 Gradle strictly约束。

例如:

implementation 'org.apache.httpcomponents:httpclient:4.5.4'
implementation('commons-codec:commons-codec') {
   version {
     strictly '1.9'
   }
}

这里的commons-codehttpclient的内部依赖,通过对commons-code增加strictly约束, httpclient将被强制使用 1.9 版本,而不管其项目内部定义了什么。

您可以在此处找到更多详细信息


但是假设在您的情况下,依赖项 B 与旧版本的毕加索不兼容,那么您可以将依赖项之一提取到单独的模块中,并在那里严格传递依赖项。

然后您可以尝试添加新模块并查看它是否有效,或者创建第二个依赖项的 jar 并将其添加到您的项目中,这样 Gradle 就不会首先运行冲突解决方案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM