Appearance
依赖约束
依赖约束(Dependency Constraints)允许你对依赖的版本进行限制,而无需直接引入该依赖。常用于管理传递依赖的版本。
基本用法
kotlin
dependencies {
constraints {
// 约束传递依赖的版本
implementation("com.google.guava:guava:32.0.1-jre") {
because("修复安全漏洞 CVE-2023-2976")
}
// 约束所有配置
api("org.slf4j:slf4j-api:2.0.9")
}
// 直接依赖(版本由约束管理)
implementation("com.example:A:1.0") // A 的传递依赖 guava 会被约束到 32.0.1
}约束 vs 强制
kotlin
// 约束:推荐版本,但高版本可以覆盖
constraints {
implementation("com.google.guava:guava:32.0.1-jre")
}
// 强制:严格版本,不可被覆盖
dependencies {
implementation("com.google.guava:guava") {
version { strictly("32.0.1-jre") }
}
}拒绝特定版本
kotlin
dependencies {
constraints {
implementation("com.example:lib") {
version {
rejectAll()
prefer("2.0.0")
reject("1.0.0", "1.1.0") // 拒绝已知有问题的版本
}
}
}
}在 BOM 风格项目中使用约束
kotlin
// java-platform 插件的 BOM 项目
plugins {
`java-platform`
}
dependencies {
constraints {
api("com.google.guava:guava:32.0.1-jre")
api("org.slf4j:slf4j-api:2.0.9")
runtime("ch.qos.logback:logback-classic:1.4.11")
}
}