我无法使用Gradle强制使用版本的依赖关系。我的目标是使用Spring HATEOAS库的0.20.0.RELEASE
版本,但尽管我尽了全部努力,仍然可以通过0.19.0.RELEASE
解决。Gradle不尊重强迫依赖版本
我已经尝试了一些策略,既隔离又相互结合。这些策略包括,但可能不限于以下内容(请注意,在所有情况下$springHateoasVersion
在gradle.properties
文件驻留在是模块声明春天HATEOAS依赖性目录的父目录中定义):
#1(在build.gradle
文件声明的依赖性的模块)
apply plugin: 'io.spring.dependency-management'
dependencyManagement {
dependencies {
dependency group:'org.springframework.hateoas', name:'spring-hateoas', version:"$springHateoasVersion"
}
}
#2(在build.gradle
文件声明的依赖性的模块)
compile ("org.springframework.hateoas:spring-hateoas:$springHateoasVersion") { force = true }
#3(在build.gradle
文件父目录)
subprojects {
configurations.all {
resolutionStrategy {
force "org.springframework.hateoas:spring-hateoas:$springHateoasVersion"
}
}
}
我已经做了我最好的研究这个问题:
这个问题有一个公认的答案,但似乎并没有像与我遇到的问题完全匹配:How can I force Gradle to set the same version for two dependencies?
这些问题似乎都没有被接受的答案:1)Gradle is not honoring resolutionStrategy.force,2)Forcing a module version has no effect on generated org.eclipse.wst.common.component。
除了我的项目被破坏(因为我使用的是错误版本的Spring HATEOAS),我可以明确地看到,尽管我的所有抗议活动都是Gradle“有意识地”选择不正确的依赖项版本。当我运行./gradlew dependencyInsight --dependency spring-hateoas
,我看到下面的输出:
org.springframework.hateoas:spring-hateoas:0.19.0.RELEASE (selected by rule)
org.springframework.hateoas:spring-hateoas:0.20.0.RELEASE -> 0.19.0.RELEASE
\--- project :Commons
\--- compile
尽管名称,dependencyInsight
任务提供令人惊讶的一点洞察其中规则造成的摇篮,选择不适当的依赖版本,更何况我怎么可能去规避所述规则。