我在一个具有多个服务和库的大型项目中工作,大多数使用 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 (*)
?
答案 0 :(得分:1)
gradle docs将其归档在Advanced Dependency Management下。您应该能够使用excludes
来实现自己的目标。还有其他方法Gradle Docs
compile(“some:other:dependency”) {
exclude group: 'ch.qos.logback', module: 'logback-classic'
}