Отладка 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")))

Как узнать, что не так?

0 ответов

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