我从事一个包含多个服务和库的大型项目,主要是在grails,中使用gradle构建器。我正在尝试更新一个库(比如出于安全原因,logback) )。
我已经在我们的一个库中更新了它(比如our-logger),,如下所示):
#our-logger/build.gradle
...
dependencies {
...
compile 'ch.qos.logback:logback-classic:1.2.3'
...
}当我更新一个服务(比如our-service)来使用新版本的our-logger )时,我从其他库中获得了logback,而gradle选择了通过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 (*)如何在不显式声明所有服务的情况下强制执行logback-1.2.3?
发布于 2019-05-12 14:36:04
gradle文档将此文件置于高级依赖管理下。您应该能够使用excludes来实现您的目标。还有其他方法也是分级医生
compile(“some:other:dependency”) {
exclude group: 'ch.qos.logback', module: 'logback-classic'
}https://stackoverflow.com/questions/56078028
复制相似问题