在 Gradle 中确定依赖版本覆盖的来源
Determine source of dependency version override in Gradle
我已经声明了 org.spockframework:spock-spring:1.1.d91bf785-groovy-2.4
的依赖项,但在 运行time 范围内它被覆盖为 1.0-groovy-2.4
。有没有办法找出哪个依赖项覆盖了它?
1.0-groovy-2.4
不存在于本地任何 gradle 文件中,当我在 shared-config
项目中 运行 gradle dependencies
时不可见。
这是来自 main-web
项目的 gradle dependencies
:
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"
}
}
似乎您正在使用 spring 引导作为父项或 spring 引导依赖项作为 bom(依赖项管理器)
在最新的 spring 引导版本 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 了解更多信息。
我已经声明了 org.spockframework:spock-spring:1.1.d91bf785-groovy-2.4
的依赖项,但在 运行time 范围内它被覆盖为 1.0-groovy-2.4
。有没有办法找出哪个依赖项覆盖了它?
1.0-groovy-2.4
不存在于本地任何 gradle 文件中,当我在 shared-config
项目中 运行 gradle dependencies
时不可见。
这是来自 main-web
项目的 gradle dependencies
:
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"
}
}
似乎您正在使用 spring 引导作为父项或 spring 引导依赖项作为 bom(依赖项管理器)
在最新的 spring 引导版本 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 了解更多信息。