2016-12-23 102 views
0

我无法使用Gradle强制使用版本的依赖关系。我的目标是使用Spring HATEOAS库的0.20.0.RELEASE版本,但尽管我尽了全部努力,仍然可以通过0.19.0.RELEASE解决。Gradle不尊重强迫依赖版本

我已经尝试了一些策略,既隔离又相互结合。这些策略包括,但可能不限于以下内容(请注意,在所有情况下$springHateoasVersiongradle.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任务提供令人惊讶的一点洞察其中规则造成的摇篮,选择不适当的依赖版本,更何况我怎么可能去规避所述规则。

回答

0

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

为了把事情的工作,我添加了以下到build.gradle文件目录(相对于宣布春季HATEOAS的依赖模块的目录)。

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

    dependencyManagement { 
     applyMavenExclusions false 
    } 

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