我无法使用Gradle强制使用某个版本的依赖项。我的目标是使用Spring HATEOAS库的0.20.0.RELEASE
版本,但尽管我付出了很多努力,但仍然可以解析为0.19.0.RELEASE
。
我尝试过多种策略,无论是孤立还是相互结合。这些策略包括但不限于以下内容(请注意,在所有情况下$springHateoasVersion
都在gradle.properties
文件中定义,该文件位于模块声明目录的父目录中。 Spring 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
任务对哪个规则导致Gradle选择不合适的依赖版本提供了令人惊讶的了解,更不用说我可能会绕过所述规则。
答案 0 :(得分:0)
我找到了解决此问题的方法here。当然这是我没有尝试过的一件事,因为它“看起来并不重要”。 : - /
为了使工作正常,我将以下内容添加到父目录的build.gradle
文件中(相对于声明依赖于Spring HATEOAS的模块的目录)。
subprojects {
apply plugin: 'io.spring.dependency-management'
dependencyManagement {
applyMavenExclusions false
}
ext['spring-hateoas.version'] = "$springHateoasVersion"
}