在Gradle中强制传递依赖关系版本

h7wcgrx3  于 2022-11-14  发布在  其他
关注(0)|答案(2)|浏览(1022)

我正在用Gradle尝试移植我的Maven项目,我的问题是:
在maven中,我们有<dependencyManagement>,它提供了一个通用的(默认)特定依赖项的版本(只有在子pom中没有版本号的情况下才使用)。据我所知,强制所有可传递依赖项的某个版本。所以如果我理解正确的话,即使我们作为依赖项的工件B对工件C版本1有依赖性。0,那么我们仍将使用在<dependencyManagement>中定义的工件C的版本(因此可能是2.0)。对吗?
如果是这样的话,在Gradle中是否有类似的方法?我知道替换<dependencyManagement>的常见方法是在构建脚本中创建一个GroovyMap。但是,我如何强制传递依赖版本?如果我使用Gradle的“强制”功能,它是否会影响所有(不仅仅是传递)依赖(这显然不是我想要的)?

7lrncoxx

7lrncoxx1#

在Gradle中,强制版本(例如,Configuration.resolutionStrategy.force)将对配置的所有依赖项(直接依赖项和传递依赖项)强制使用该版本。没有一个一流的功能可以仅对传递依赖项强制使用一个版本。您是否有此功能的有效用例?最终,Gradle和Maven都会为依赖项选择一个版本,而不管它在依赖关系树中出现的位置和频率如何。

bejyjqdl

bejyjqdl2#

有一个ResolutionStrategy特性,允许强制包含可传递依赖项的工件版本:https://docs.gradle.org/current/dsl/org.gradle.api.artifacts.ResolutionStrategy.html
还可以配置依赖关系约束:https://docs.gradle.org/current/userguide/dependency_constraints.html

相关问题