Определить источник транзитивной зависимости

У меня есть проект, в котором я использую sl4j с log4j. Недавно я добавил несколько новых зависимостей к моему проекту, и одна из этих новых зависимостей, которые я добавил, включает транзитивную зависимость от logback-classic, которая включает в себя еще одно связывание для sj4j.

Я хочу избавиться от logback, но я не знаю, какая из моих прямых зависимостей добавила транзитивную зависимость, чтобы я мог ее исключить.

В maven я знаю, как получить весь график зависимостей, чтобы определить, который является источником транзитивной зависимости, но я не знаю, как это сделать с помощью gradle.

Кто-нибудь знает, как получить зависимость от транзитивной зависимости от градиента?

Ответ 1

Чтобы показать все дерево зависимостей для каждого пути класса, используйте gradle dependencies. Если вас интересует только определенный путь класса, используйте (скажем) gradle dependencies --configuration compile. Используйте -p для запуска на подлодке -p.

Чтобы показать, кто втягивает определенную зависимость в определенный путь класса и как разрешены конфликты в версии, используйте (скажем) gradle dependencyInsight --dependency logback --configuration compile.

Обратите внимание, что вы также можете исключить зависимость из всего пути класса (или нескольких). Обычно это более надежно, чем исключение конкретной транзитивной зависимости. Например:

configurations.all*.exclude module: "logback-classic"