Отладка Gradle исключения транзитивной зависимости
Как я могу отладить исключение зависимостей в Gradle 7 при использовании Kotlin?
Эта проблема меня бесит: одни исключения учитываются, другие просто игнорируются.
я пробовал обычный
plugins {
`java-platform`
}
configurations {
all {
exclude(group="org.hamcrest", module="hamcrest-core")
}
}
в общем
parent/build.gradle.kts
но некоторые исключения игнорируются. Приведенный выше пример — один из них. Строковые литералы копируются и вставляются из вывода
gradle dependencies
, так что это не опечатка. Кроме того, другие зависимости работают.
Так я делал это в каждом
build.gradle.kts
:
В некоторых модулях теперь показывает это:
+--- junit:junit:4.13.2
+--- org.junit.jupiter:junit-jupiter-api:5.8.2
чего я и ожидал (нет ребенка до 4 июня).
Но здесь это не работает:
testFixturesApi(libs.junit4) {
exclude(group="org.hamcrest", module="hamcrest-core")
}
Что бы я ни пытался, я всегда получаю этот результат для
./gradlew :$module:dependencies
:
testCompileClasspath - Compile classpath for source set 'test'.
...
+--- junit:junit:4.13.2
| \--- org.hamcrest:hamcrest-core:1.3
+--- com.h2database:h2:2.1.212
...
testFixturesCompileClasspath - Compile classpath for source set 'test fixtures'.
...
+--- junit:junit:4.13.2
| \--- org.hamcrest:hamcrest-core:1.3
+--- org.junit.jupiter:junit-jupiter-api:5.8.2
...
testFixturesRuntimeClasspath - Runtime classpath of source set 'test fixtures'.
+--- junit:junit:4.13.2
| \--- org.hamcrest:hamcrest-core:1.3
+--- org.junit.jupiter:junit-jupiter-api:5.8.2
...
testRuntimeClasspath - Runtime classpath of source set 'test'.
...
+--- junit:junit:4.13.2
| \--- org.hamcrest:hamcrest-core:1.3
+--- com.h2database:h2:2.1.212
...
testCompileClasspath - Compile classpath for source set 'test'.
...
+--- junit:junit:4.13.2
| \--- org.hamcrest:hamcrest-core:1.3
+--- com.h2database:h2:2.1.212
...
Таким образом, исключенная зависимость просачивается даже в
test*Classpath
. Когда я исключаю его там с помощью
testImplementation(libs.junit4) {
exclude(group="org.hamcrest", module="hamcrest-core")
}
это не имеет никакого эффекта.
Только когда добавил
configurations {
all {
exclude(group="org.hamcrest", module="hamcrest-core")
}
}
в каждом модуле build.gradle.kts зависимость наконец исчезла.
Почему
configuration.all
эффект в самом модуле, но не при включении в качестве такой платформы?
dependencies {
api(platform(project(":parent")))
Как узнать, что не так?