Я начал миграцию с 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 для приведенного выше фрагмента или предложить какое-либо другое решение, как справиться с этим?
Это может сработать (хотя я не пробовал):
configurations.forEach { it.exclude("com.google.guava", "listenablefuture") }
не работает, когда зависимость исходит от плагина
Это работает с 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")
}
Отлично работает в моем build.gradle.kts ?