如何限制传递依赖项的最大版本

How to limit max version of a transitive dependency

提问人:Addev 提问时间:11/30/2021 更新时间:11/30/2021 访问量:118

问:

我有一个关于如何为传递依赖项指定最大版本的问题。让我用一个例子来解释一下:

我的应用程序使用库,问题是 library-foo 版本 3.0+ 引入了重大更改,而我的应用程序尚未准备好。所以我在我的依赖项中声明它:library-foo

implementation 'com.example:library-foo:(,3.0)'

当我引入一个新的依赖项时,我的问题就来了,比如说.该库引入了对library-barlibrary-foo

library-bar 5.0   -depends on-> library-foo 2.2
library-bar 5.5   -depends on-> library-foo 3.1

因此,在添加新的依赖项后:

implementation 'com.example:library-foo:(,3.0)'
implementation 'com.example:library-bar:5.+'

我正在跳跃依赖项解析以使其足够聪明。Gradle 包含 5.5 版本,在我的项目中引入了重大更改。

我知道我也可以限制 的最大版本,但在有很多依赖项的项目中,声明我的麻烦库的最大版本(在这种情况下是 foo)会很棒,迫使其余的依赖项适应这一点。library-bar

有可能这样做吗?

android gradle android-gradle-plugin 依赖项 build.gradle

评论


答:

1赞 Alexander Hoffmann 11/30/2021 #1

您可以使用 gradle 的约束

implementation 'com.example:library-foo:3.0'
implementation 'com.example:library-bar:5.+'
constraints {
  implementation('com.example:library-foo:3.0') {
    because 'Versions greater than 3.0 introduce bugs'
  }
}