如何从 Gradle 版本目录中排除依赖项?

问题描述 投票:0回答:5

我想执行与以下声明相同的操作:

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
            }
        }
    }
}
java gradle groovy
5个回答
4
投票

来自对一个有点不相关的问题的评论:

https://github.com/gradle/gradle/issues/19517#issuecomment-1012159205

(...) 目录纯粹是可供选择的依赖项列表。

因此,任何其他内容(例如排除),您必须像往常一样在

dependencies { }
块中定义它们。


1
投票

这很丑,但很有效👀

以 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")
}
    

0
投票

有一个简单的方法可以做到这一点,不幸的是没有记录:

implementation dependencies.create(libs.commons.beanutils.get()) {
    exclude group: 'commons-collections', module: 'commons-collections'
}

注意

get()
调用 - 本例中的 beanutils 是
Provider<?>
的实例,因此您需要手动解开它。


0
投票

这只能在构建脚本本身中完成,例如

    implementation(libs.foo.bar) {
        exclude(group = "baz", module = "bag")
    })

-1
投票

在 libs.versions.toml 文件中

[versions] 
retrofitCoroutinesAdapter = "0.9.2"

在build.gradle(app)文件中

implementation dependencies.create(libs.retrofitCoroutinesAdapter.get()) {
exclude group: 'org.jetbrains.kotlinx'
}
© www.soinside.com 2019 - 2024. All rights reserved.