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

确定Gradle中依赖项版本覆盖的来源,gradle,dependency-management,Gradle,Dependency Management,我已经为org.spockframework:spock-spring:1.1.d91bf785-groovy-2.4声明了一个依赖项,但在运行时范围内它被覆盖为1.0-groovy-2.4。有没有办法找出哪个依赖项正在覆盖它 1.0-groovy-2.4在本地的任何gradle文件中都不存在,当我在共享配置项目中运行gradle dependencies时,它不可见 以下是主网站项目中的gradle依赖项: testCompile [...] +--- project :shared-conf

我已经为
org.spockframework:spock-spring:1.1.d91bf785-groovy-2.4
声明了一个依赖项,但在运行时范围内它被覆盖为
1.0-groovy-2.4
。有没有办法找出哪个依赖项正在覆盖它

1.0-groovy-2.4
在本地的任何gradle文件中都不存在,当我在
共享配置
项目中运行
gradle dependencies
时,它不可见

以下是
主网站
项目中的
gradle依赖项

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
但是
共享配置
项目中的相同命令不会产生任何结果:

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"
    }
}

似乎您正在使用spring boot作为父项,或者使用spring boot依赖项作为bom(依赖项管理器)

默认情况下,在最新的spring boot版本1.5+
spock中。版本
设置为
1.0-groovy-2.4
,这就是为什么
spock core
仍有旧版本的原因

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


访问以了解更多信息。

谢谢!我也弄明白了,但忘了更新我的答案。我自己使用
ext[“spock.version”]=…
。需要注意的其他版本标识符位于