我正在玩gradle试图移植我的maven项目,这是我的问题:
在maven中,我们有 <dependencyManagement>
,它为某些依赖项提供了一个公共(默认)版本(只有在子pom中使用时才使用这个工件而没有版本号) . 根据我的理解,它也强制某个版本用于所有传递依赖 . 因此,如果我理解正确,即使我们作为依赖项的工件B依赖于工件C版本1.0,那么我们仍将使用 <dependencyManagement>
中定义的工件C的版本(因此它可能是2.0) . 那是对的吗?
如果是这样,有没有办法在Gradle做类似的事情?我知道替换 <dependencyManagement>
的常用方法是在其中一个构建脚本中创建一个Groovy映射 . 但是我如何强制传递依赖版本呢?如果我使用Gradle 's 2849783 won' t它会影响所有(不仅是传递)依赖(这显然不是我想要的)?
2 回答
在Gradle中,强制一个版本(例如,使用
Configuration.resolutionStrategy.force
)将强制它为配置的所有依赖项,直接和传递 . 没有一流的功能只强制版本传递依赖 . 你有一个有效的用例吗?在一天结束时,无论如何,Gradle和Maven都会为依赖项选择单个版本,无论它在依赖树中出现的位置和频率如何 .有一个ResolutionStrategy功能允许强制包含传递依赖项的工件版本:https://docs.gradle.org/current/dsl/org.gradle.api.artifacts.ResolutionStrategy.html