Gradle Not Honoring Forceddency Version

时间:2016-12-23 18:11:17

标签: java spring gradle dependency-management spring-hateoas

我无法使用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选择不合适的依赖版本提供了令人惊讶的了解,更不用说我可能会绕过所述规则。

1 个答案:

答案 0 :(得分:0)

我找到了解决此问题的方法here。当然这是我没有尝试过的一件事,因为它“看起来并不重要”。 : - /

为了使工作正常,我将以下内容添加到目录的build.gradle文件中(相对于声明依赖于Spring HATEOAS的模块的目录)。

subprojects {
    apply plugin: 'io.spring.dependency-management'

    dependencyManagement {
        applyMavenExclusions false
    }

    ext['spring-hateoas.version'] = "$springHateoasVersion"
}