在Gradle中强制传递依赖版本

时间:2012-03-07 23:31:00

标签: maven dependencies gradle dependency-management

我正在玩gradle试图移植我的maven项目,这是我的问题:

在maven中,我们有<dependencyManagement>,它为某些依赖项提供了一个公共(默认)版本(仅在子pom中使用此工件而没有版本号时使用)。根据我的理解,它也强制某个版本用于所有传递依赖。因此,如果我理解正确,即使我们作为依赖项的工件B依赖于工件C版本1.0,那么我们仍将使用<dependencyManagement>中定义的工件C的版本(因此它可能是2.0)。这是对的吗?

如果是这样,那么有没有办法在Gradle中做类似的事情?我知道替换<dependencyManagement>的常用方法是在其中一个构建脚本中创建一个Groovy映射。但是我如何强制传递依赖版本呢?如果我使用Gradle的“强制”将不会影响所有(不仅是传递)依赖(这显然不是我想要的)?

2 个答案:

答案 0 :(得分:8)

在Gradle中,强制使用某个版本(例如使用Configuration.resolutionStrategy.force)将强制它用于配置的所有依赖项,直接和传递。没有一流的功能只强制版本传递依赖。你有一个有效的用例吗?在一天结束时,Gradle和Maven都会为依赖项选择一个版本,无论它在依赖树中出现的位置和频率如何。

答案 1 :(得分:0)

有一个ResolutionStrategy功能允许强制包含传递依赖的工件版本:https://docs.gradle.org/current/dsl/org.gradle.api.artifacts.ResolutionStrategy.html