在gradle中的几个冲突的传递依赖项中强制执行最高版本

时间:2019-05-10 12:45:49

标签: gradle grails

我在一个具有多个服务和库的大型项目中工作,大多数使用 grails 构建器。出于安全原因,我正在尝试更新库(例如 gradle )。

我已经在我们的一个库(例如 logback )中对其进行了更新,如下所示:

our-logger

当我更新服务(例如 #our-logger/build.gradle ... dependencies { ... compile 'ch.qos.logback:logback-classic:1.2.3' ... } )以使用新版本的our-service时,我从其他库中获得了logback,并且gradle选择了 版本通过our-logger和其他一些依赖项提供,而不是更高版本通过cobertura提供。

our-logger
#our-service/build.gradle
...
apply plugin: 'cobertura'
...
dependencies {
    ...
    compile 'our-logger:9.99' # safe now with logback-1.2.3
    ...
}

如何在不显式声明所有服务的情况下强制执行~/our-service $ ./gradlew dependencies ... cobertura \--- net.sourceforge.cobertura:cobertura:2.1.1 +--- ch.qos.logback:logback-classic:1.0.13 -> 1.1.11 | \--- ch.qos.logback:logback-core:1.1.11 ... compile - Dependencies for source set 'main' (deprecated, use 'implementation ' instead). +--- org.grails:grails-dependencies:3.3.8 | +--- org.springframework.boot:spring-boot-starter-logging:1.4.2.RELEASE -> 1.5.15.RELEASE | | +--- ch.qos.logback:logback-classic:1.1.11 | | | +--- ch.qos.logback:logback-core:1.1.11 ... +--- our-logger:9.99 | +--- ch.qos.logback:logback-classic:1.2.3 -> 1.1.11 (*)

1 个答案:

答案 0 :(得分:1)

gradle docs将其归档在Advanced Dependency Management下。您应该能够使用excludes来实现自己的目标。还有其他方法Gradle Docs

compile(“some:other:dependency”) {
    exclude group: 'ch.qos.logback', module: 'logback-classic'
}