Що таке команда графа залежності артефакту від Gradle?


123

Я читав цей коментар у документах Gradle :

To deal with problems due to version conflicts, reports with dependency graphs
are also very helpful. Such reports are another feature of dependency management.

У мене привозять якусь банку, але мені потрібно зрозуміти, звідки вона береться. Зазвичай я б просто глобально його виключив, але мені потрібна деяка інформація про ієрархію тут. Як я можу отримати таку інформацію, як можу, від Ivy та Maven?

НЕ кажучи вже про те, що хтось вносить в мій список банок зі сплячки (багато), і мені дуже хочеться знати, хто, оскільки я не використовую сплячку, і намагаюся усунути цю залежність.

Відповіді:


127

Команда є gradle dependencies, і її результат значно покращився в Gradle 1.2. (Ви вже можете спробувати 1.2-rc-1 сьогодні.)


власне, я спробував це .... Я зрозумів, що мої залежності знаходяться в моєму підпроекті найнижчого рівня (тобто такому, від якого залежать усі інші), а не в головному проекті ... не впевнений, чи погано це чи добре в даний момент .
Дін Гіллер

Вам потрібно запустити команду для конкретного проекту, який вас цікавить. Як правило, ви ввійдете в каталог проектів і запустите команду звідти.
Пітер Нідервайзер

9
Це працює не для всіх типів проектів. Я отримую "Без конфігурацій", і мені потрібно запустити щось інше, щоб зробити це. Сподіваємось, один день Gradle впорається з цим, тому фактичні команди будуть передбачувані.
Р. ван Твіск

2
Чи є прапор для включення перехідних залежностей?
thetwan

1
Вони включаються автоматично.
Пітер Нідервайзер

121

Ах, оскільки у мене не було залежностей у моєму головному проекті, "grade zavisnosti" перелічує лише ті, а не підпроектні залежності, тому правильна команда виявилася

 gradle :<subproject>:dependencies

тож для мене це було

 gradle :master:dependencies

20
Приємно, якщо можна сказати -rдля рекурсивного
Блонделл

38

Якщо ви хочете побачити залежності від проекту та всіх підпроектів, які використовуються у вашому build.gradle верхнього рівня:

subprojects {
    task listAllDependencies(type: DependencyReportTask) {}
}

Тоді зателефонуйте gradle:

gradle listAllDependencies

2
Детальніше про такий підхід у публікації щоденника: solidsoft.wordpress.com/2014/11/13/…
Marcin Zajączkowski

9
Ви можете додати це до свого, ~/.gradle/init.gradleа не додавати його до кожної збірки. Тоді він працює для всіх проектів на вашій машині, але тільки для вас.
деревь

24

Якщо у вас багато конфігурацій, вихід може бути досить тривалим. Щоб просто показати залежності від конфігурації виконання, запустіть

gradle dependencies --configuration runtime

15

Якщо ви хочете рекурсивно включати підпроекти, ви завжди можете їх написати самостійно:

Вставте у верхній рівень build.gradle:

task allDeps << {
    println "All Dependencies:"
    allprojects.each { p ->
        println()
        println " $p.name ".center( 60, '*' )
        println()
        p.configurations.all.findAll { !it.allDependencies.empty }.each { c ->
            println " ${c.name} ".center( 60, '-' )
            c.allDependencies.each { dep ->
                println "$dep.group:$dep.name:$dep.version"
            }
            println "-" * 60
        }
    }
}

Виконати з:

gradle allDeps

5
gradlew -q :app:dependencies > dependencies.txt

Буде записати всі залежності до файлу зависимостей.txt


4

Для тих, хто шукає налагодження залежностей gradle в react-nativeпроектах, команда (виконується з projectname/android)

./gradlew app:dependencies --configuration compile

0

В останніх версіях Gradle (тобто. 5+), якщо ви запускаєте свою збірку з --scanпрапором, вона повідомляє вам всіляку корисну інформацію, включаючи залежності, у браузері, де ви можете натиснути.

gradlew --scan clean build

Він проаналізує лайно з того, що відбувається в цій збірці. Це досить акуратно.


1
але він аналізує лише цілі, які пробігли не повний графік :(.
Дін Гіллер

Правда! Це залежить від того, що ви хочете. Я думаю, що залежність лише від тих цілей, які перебігли, є ще сильнішими. Він розповість, чому, здається, один набір команд робить неправильну справу.
Райан

Я дуже хочу отримати повний графік, тому мені не доведеться перевіряти кожен вузол tbh .... що стає досить втомливим .... навіть якщо це займе певний час, це корисніше, але я не бачу способу зробити це це в нових версіях.
Дін Гіллер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.