Используя gradle, чтобы найти дерево зависимостей

Можно ли использовать gradle для создания дерева того, что зависит от того, что?

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

+459
источник поделиться
12 ответов

Для Android используйте эту строку

 gradle app:dependencies

или если у вас есть обертка gradle:

./gradlew app:dependencies

где app - ваш проектный модуль.

Кроме того, если вы хотите проверить, есть ли что-то из compile vs. testCompile vs androidTestCompile, а также то, что его тянет:

./gradlew :app:dependencyInsight --configuration compile --dependency <name>
./gradlew :app:dependencyInsight --configuration testCompile --dependency <name>
./gradlew :app:dependencyInsight --configuration androidTestCompile --dependency <name>
+531
источник

Вы можете отобразить дерево зависимостей командой gradle dependencies. Для получения дополнительной информации см. Раздел 11.6.4 Задание зависимостей проекта в онлайн-руководстве пользователя.

+210
источник
другие ответы

Связанные вопросы


Похожие вопросы

Если вам трудно перейти на консольный вывод gradle dependencies, вы можете добавить плагин отчетов проекта:

apply plugin: 'project-report'

И сгенерируйте отчет HTML, используя:

$ ./gradlew htmlDependencyReport

Отчет обычно можно найти в build/reports/project/dependencies/index.html

Он выглядит так: введите описание изображения здесь

+128
источник

В Android Studio (по крайней мере, начиная с версии 2.3.3) вы можете запустить команду непосредственно из пользовательского интерфейса:

Перейдите на вкладку Gradle, а затем дважды щелкните по: yourmodule → Tasks → android → androidDependencies

Дерево будет отображаться на вкладке Gradle Консоль

Изображение стоит тысяча слов

+76
источник

Часто полный график зависимостей test, compile и androidTestCompile слишком велик, чтобы исследовать вместе. Если вы просто хотите использовать график зависимости compile, который вы можете использовать:

./gradlew app:dependencies --configuration compile

Источник: Gradle раздел разделов 4.7.6

Примечание. compile устарел в более поздних версиях Gradle, а в более поздних версиях вам рекомендуется сменить все ваши зависимости compile на implementation. См. этот ответ здесь

+26
источник

Если вы хотите визуализировать свои зависимости в графике, вы можете использовать плагин gradle-dependency-graph-generator.

Обычно выходные данные этого плагина можно найти в каталоге build/reports/dependency-graph, и он содержит три файла (.dot |.png |.svg), если вы используете 0.5.0 версия плагина.

Пример графика зависимостей в реальном приложении (Шахматные часы):

graph

+20
источник

Для Android введите это в терминале

gradlew app:dependencies

В нем будут перечислены все зависимости и те, которые имеют более новые версии для обновления, например.

com.android.support:customtabs:26.1.0 -> 27.1.1 (*)
+9
источник

Ситуация в Gradle продвинулась вперед, поэтому я считаю, что этот вопрос заслуживает другого ответа.
Начиная с Gradle 4.3, были введены сборки сканов. Вся соответствующая информация доступна в документации Gradle (1, 2). Для меня это, кажется, самый простой способ проверить ваши зависимости (и, как правило, вашу сборку) понятным, организованным способом.

Их очень легко создать, просто выполните:

gradle build --scan  

(или ./gradlew build --scan, если вы используете обертку)

Это создает случайно сгенерированную ссылку, где вы можете увидеть ваш скан. Открывая эту ссылку, вы вводите свой адрес электронной почты и получаете полный контроль над ссылкой: например. поделиться или удалить его. В нем много информации о вашей сборке, а не только о зависимостях. Вы можете увидеть свои зависимости, их иерархии, репозиторий, используемый для их получения, а также множество других вещей о вашей сборке, а именно, ее производительность (которая представляет интерес для больших сложных сборок), ваши тесты, даже вывод на консоль и ваш конфигурация системы, в которой использовались JDK и JVM, максимальный размер кучи и т.д.

Это печатный экран из фиктивного проекта:

Build scan example

Сканирование сборки является общей записью сборки, которая дает представление о том, что произошло и почему. Вы можете бесплатно создать сборку на scans.gradle.com.

Однако обратите внимание, что информация для вашего процесса сборки будет отправлена на серверы Gradle. Вы можете полностью удалить его, когда закончите проверку.

Наконец, вы также можете использовать сборку сканов с версиями Gradle более ранних, чем 4.3, вам просто нужно вручную добавить плагин сканов в ваш buildscript.

Редактирование:
Включая некоторые отзывы из комментариев, некоторые дополнительные заметки:
1) Это очень трудно сделать по ошибке или без понимания того, что некоторая информация для вашей сборки будет онлайн (частная для вас, с возможностью ее удаления, но все же онлайн).

При выполнении gradle build --scan появляется следующее сообщение:

Publishing a build scan to scans.gradle.com requires accepting the Gradle
Terms of Service defined at https://gradle.com/terms-of-service. Do you
accept these terms? [yes, no]

Вы должны явно написать yes, а затем сообщение продолжится:

Publishing build scan...  
https://gradle.com/s/a12en0dasdu

2) В Gradle Enterprise вы можете размещать сканы сборки gradle на своих собственных серверах. Однако у меня нет опыта в этом, и мой предложенный подход был о стандартном распределении Gradle, используя серверы Gradle для ваших проверок сборки.

3) Сам Gradle продвигает сканирование сборки как способ решения большинства ваших проблем со сборкой.

+8
источник

В Android Studio

1) Откройте терминал и убедитесь, что вы находитесь в корневой папке проекта.

2) Запустите ./gradlew app:dependencies (если не использовать обертку gradle, попробуйте gradle app:dependencies)

Обратите внимание, что запуск ./gradle dependencies даст вам только дерево зависимостей корневой папки проекта, поэтому важно отметить приложение, описанное выше, т.е. ./gradlew app:dependencies.

+7
источник

Я также нашел полезным запустить это:

./gradlew dI --dependency <your library>

Это показывает, как разрешаются зависимости (dependencyInsight), и помогает вам отладить, где вам нужно принудительно включать или исключать библиотеки в вашем build.gradle

Видеть: https://docs.gradle.org/current/userguide/tutorial_gradle_command_line.html

+5
источник

Обратите внимание, что вам может понадобиться сделать что-то вроде ./gradlew <module_directory>:<module_name>:dependencies если модуль имеет дополнительную директорию, прежде чем достигнет ее build.gradle. Если вы сомневаетесь, выполните ./gradlew tasks --all чтобы проверить имя.

+5
источник

Вы должны использовать это: зависимости gradle для окон

-2
источник

Посмотрите другие вопросы по метке или Задайте вопрос