在Gradle中强制传递依赖版本

Mat*_*zyk 2 dependencies dependency-management gradle maven

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

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

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

Pet*_*ser 8

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