Как исключить библиотеку из всех зависимостей в Kotlin DSL build.gradle?

Я начал миграцию с build.gradle (Groovy) на build.gradle.kts (Kotlin DSL). Дело в том, что com.google.common.util.concurrent.ListenableFuture (от com.google.guava) существует в нескольких зависимостях. Из-за этого сборка завершается с ошибкой java.lang.RuntimeException: Duplicate class ....

Раньше (когда у меня был build.gradle в Groovy) эта проблема решалась с помощью этого фрагмента:

configurations {
    all*.exclude group: 'com.google.guava', module: 'listenablefuture'
}

Но я не могу найти ничего подобного, используя Kotlin DSL. Не могли бы вы предоставить альтернативу Kotlin для приведенного выше фрагмента или предложить какое-либо другое решение, как справиться с этим?

23
0
10 049
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Это может сработать (хотя я не пробовал):

configurations.forEach { it.exclude("com.google.guava", "listenablefuture") }

Отлично работает в моем build.gradle.kts ?

Sylhare 12.08.2020 15:08

не работает, когда зависимость исходит от плагина

Dániel Kis 22.10.2021 13:58

Это работает с Gradle Kotlin DSL:

configurations {
    all {
        exclude(group = "com.google.guava", module = "listenablefuture")
    }
}

Для двух групп вы можете использовать так:

configurations.forEach {
            it.exclude("com.google.guava", "listenablefuture")
            it.exclude(group = "org.jetbrains", module = "annotations")
        }
    

Другие вопросы по теме