gradle - 从 gradle 中的几个冲突的传递依赖项中强制执行最高版本
问题描述
我在一个包含多个服务和库的大型项目中工作,主要是在grails
buildergradle
中。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
在所有服务中不明确声明的情况下强制执行?
解决方案
gradle docs 文件在 Advanced Dependency Management 下。您应该能够使用 excludes
. 还有其他方法Gradle Docs
compile(“some:other:dependency”) {
exclude group: 'ch.qos.logback', module: 'logback-classic'
}
推荐阅读
- javascript - v8::HandleScope::CreateHandle() 中的致命错误 # 无法在没有 HandleScope 的情况下创建句柄
- java - 在运行时更改休眠 JPA 属性
- google-chrome-extension - 有没有办法使用 Airwatch 安装浏览器扩展程序?
- python - 尝试使用当前时间和经过的时间计算在 Python 中输入的时间
- flutter - Dart 程序执行不按顺序
- android-studio-4.0 - Android Studio 4.0 升级后“无法识别启动活动:未找到默认活动”
- python - 在 Python 中合并 2 个数组
- xaml - 基于 Itemsource {Binding} 到 ObservableCollection 的动态 ListView 显示<"这可以改变和规定 listview 样式"?>
- python - 根据分类值对列进行编码
- environment-variables - CircleCI 插入环境变量