首页 > 解决方案 > Gradle - 强制子依赖版本

问题描述

我们有一个使用 Gradle 4.5 的旧应用程序。有人在没有明确版本的情况下添加了依赖项。

所以现在我有一些版本冲突的子依赖项。有没有办法强制子依赖版本?

我已经尝试了下面的代码,但它不起作用:

configurations.all {
    resolutionStrategy {
        force 'com.amazonaws:aws-java-sdk-dynamodb:1.11.390'
    }  
}

标签: gradlegroovy

解决方案


您应该可以使用其中之一strictlyforce此处。阅读:

https://docs.gradle.org/current/userguide/dependency_downgrade_and_exclude.html

应该有帮助。该手册或多或少准确地描述了您的方案。

<<评论后编辑>>

忘记了您使用的是 gradle 4.5,我认为您没有strictly并且force可以使用。

另一种方法是在定义引入错误版本的依赖项时排除传递依赖项:

apply plugin: "java"

repositories { 
  mavenCentral()
}

dependencies { 
  compile('whatever-dependency:is-pulling-in-wrong-version:1.0.0') {
    exclude group: 'com.amazonaws', module: 'aws-java-sdk-dynamodb'
  }
  compile 'com.amazonaws:aws-java-sdk-dynamodb:1.11.390'
}

这应该从其他库的传递树中排除 dynamo 依赖项,并为您提供您特别要求的版本。


推荐阅读