确定Gradle中依赖项版本覆盖的来源

问题描述 投票:2回答:1

我已经为org.spockframework:spock-spring:1.1.d91bf785-groovy-2.4声明了一个依赖项,但是在运行时范围内它被重写为1.0-groovy-2.4。有没有办法弄清楚哪个依赖关系覆盖它?

1.0-groovy-2.4不存在于本地的任何gradle文件中,当我在gradle dependencies项目中运行shared-config时,它不可见。

这是来自gradle dependencies项目的main-web

testCompile
[...]
+--- project :shared-config
|    [...]
|    +--- org.spockframework:spock-spring:1.1.d91bf785-groovy-2.4
[...]
runtime
[...]
+--- project :shared-config
|    [...]
|    +--- org.spockframework:spock-spring:1.1.d91bf785-groovy-2.4 -> 1.0-groovy-2.4
|    |    +--- org.spockframework:spock-core:1.0-groovy-2.4 -> 1.1.d91bf785-groovy-2.4
|    |    \--- org.codehaus.groovy:groovy-all:2.4.1 -> 2.4.12

dependencyInsight提供了一些见解:

$ gradle dependencyInsight --dependency org.spockframework:spock-spring:1.0-groovy-2.4 --configuration runtime    
> Task :main-web:dependencyInsight
org.spockframework:spock-spring:1.0-groovy-2.4 (selected by rule)

org.spockframework:spock-spring:1.1.d91bf785-groovy-2.4 -> 1.0-groovy-2.4
\--- project :shared-config
     \--- runtime

shared-config项目中的相同命令不会产生任何结果:

No dependencies matching given input were found in configuration ':shared-config:runtime'

我试过覆盖版本没有成功:

configurations.all {
    resolutionStrategy {
        force "org.spockframework:spock-spring:1.1.d91bf785-groovy-2.4"
    }
}
gradle dependency-management
1个回答
3
投票

好像你使用spring boot作为父级或spring引导依赖项作为bom(依赖项管理器)

默认情况下,最新的春季启动版本1.5 + spock.version设置为1.0-groovy-2.4这就是为什么spock-core仍然有旧版本。

要在gradle中修复此问题,您需要在gradle应用中覆盖属性spock.version。通过将spock.version = 1.1-groovy-2.4添加到gradle.properties文件中。

访问Spring doc for overriding dep properties了解更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.