我想执行与以下声明相同的操作:
dependencies {
implementation('commons-beanutils:commons-beanutils:1.9.4') {
exclude group: 'commons-collections', module: 'commons-collections'
}
}
但在版本目录功能内。比如:
dependencyResolutionManagement {
versionCatalogs {
libs {
library('commons-lang3', 'org.apache.commons', 'commons-lang3').exclude {
// group, module etc
}
}
}
}
来自对一个有点不相关的问题的评论:
https://github.com/gradle/gradle/issues/19517#issuecomment-1012159205
(...) 目录纯粹是可供选择的依赖项列表。
因此,任何其他内容(例如排除),您必须像往常一样在
dependencies { }
块中定义它们。
这很丑,但很有效👀
以 kotlin 为例:
vorbisspi = "com.googlecode.soundlibs:vorbisspi:1.0.3.3"
implementation(libs.mp3spi.get().let { "${it.module}:${it.versionConstraint.requiredVersion}" }) {
exclude("javazoom.spi", "spi")
exclude("junit", "junit")
}
有一个简单的方法可以做到这一点,不幸的是没有记录:
implementation dependencies.create(libs.commons.beanutils.get()) {
exclude group: 'commons-collections', module: 'commons-collections'
}
注意
get()
调用 - 本例中的 beanutils 是 Provider<?>
的实例,因此您需要手动解开它。
这只能在构建脚本本身中完成,例如
implementation(libs.foo.bar) {
exclude(group = "baz", module = "bag")
})
在 libs.versions.toml 文件中
[versions]
retrofitCoroutinesAdapter = "0.9.2"
在build.gradle(app)文件中
implementation dependencies.create(libs.retrofitCoroutinesAdapter.get()) {
exclude group: 'org.jetbrains.kotlinx'
}