Gradle artefakt bağımlılık grafiği komutu nedir?


123

Bu yorumu Gradle belgelerinde okudum :

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

Getirilecek bir tür kavanoz var ama nereden geldiğini bulmam gerekiyor. Normalde bunu küresel olarak hariç tutarım, ancak buradaki hiyerarşi hakkında biraz bilgiye ihtiyacım var. Bu bilgileri Ivy ve Maven'den alabildiğim gibi nasıl edinebilirim?

Birinin kavanoz listeme Hazırda Bekletme kavanozlarını (çok fazla) getirdiğinden bahsetmiyorum bile ve gerçekten de Hibernate kullanmadığım ve bu bağımlılığı ortadan kaldırmaya çalıştığım için kim olduğunu bilmek istiyorum.

Yanıtlar:


128

Komut gradle dependencies, ve çıktısı Gradle 1.2'de çok geliştirildi. (Bugün 1.2-rc-1'i deneyebilirsiniz.)


Aslında bunu denedim .... Bağımlılıklarımın en düşük seviyedeki alt projemde (yani herkesin bağlı olduğu proje) olduğunu ve ana projede olmadığını fark ettim ... bu noktada kötü mü yoksa iyi mi emin değilim .
Dekan Hiller

İlgilendiğiniz belirli proje için komutu çalıştırmanız gerekir. Tipik olarak, proje dizinine cd ve oradan komutu çalıştırırsınız.
Peter Niederwieser

9
Bu, her tür projede çalışmaz. 'Yapılandırma yok' alıyorum ve bunun devam etmesi için başka bir şey çalıştırmam gerekiyor. Umarım bir gün gradle bunu halleder, böylece gerçek komutlar tahmin edilebilir olur.
R. van Twisk

2
Geçişli bağımlılıkları dahil etmek için bir işaret var mı?
thetwan

1
Otomatik olarak dahil edilirler.
Peter Niederwieser

121

Ah, ana projemde hiçbir bağımlılığım olmadığından, "derecelendirme bağımlılıkları" yalnızca bunları listeler ve alt proje bağımlılıklarını listelemediğinden doğru komut

 gradle :<subproject>:dependencies

yani benim için bu

 gradle :master:dependencies

20
-rÖzyinelemeli diyebilirseniz güzel
Blundell

38

Projeye olan bağımlılıkları görmek istiyorsanız ve üst düzey build.gradle'da kullanılan tüm alt projeler:

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

O halde gradle'ı arayın:

gradle listAllDependencies

2
Blog gönderisinde bu yaklaşımla ilgili daha fazla ayrıntı: solidsoft.wordpress.com/2014/11/13/…
Marcin Zajączkowski

9
Bunu, ~/.gradle/init.gradleher yapıya eklemek yerine ekleyebilirsin . O zaman makinenizdeki tüm projeler için çalışır, ancak sadece sizin için.
derekv

24

Çok fazla konfigürasyonunuz varsa, çıktı oldukça uzun olabilir. Yalnızca çalışma zamanı yapılandırmasına yönelik bağımlılıkları göstermek için şunu çalıştırın:

gradle dependencies --configuration runtime

15

Özyinelemeli alt projeleri dahil etmek istiyorsanız, bunu her zaman kendiniz yazabilirsiniz:

En üst seviyeye yapıştırın 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
        }
    }
}

Şununla çalıştırın:

gradle allDeps

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

Tüm bağımlılıkları bağımlılıklar.txt dosyasına yazar


4

react-nativeProjelerde gradle bağımlılıklarında hata ayıklamak isteyenler için , komut (çalıştırılır projectname/android)

./gradlew app:dependencies --configuration compile

0

Gradle'ın son sürümlerinde (örn. 5+), yapınızı --scanbayrakla çalıştırırsanız , tıklayabileceğiniz bir tarayıcıda bağımlılıklar da dahil olmak üzere her türlü yararlı bilgiyi size söyler.

gradlew --scan clean build

O yapıda neler olup bittiğini analiz edecek. Oldukça temiz.


1
ancak yalnızca grafiğin tamamı ile çalışmayan hedefleri analiz eder :(.
Dean Hiller

Doğru! Ne istediğine bağlı. Bence sadece koşan hedeflere olan bağımlılıklar daha da güçlü. Size neden bir dizi komutun yanlış şeyi yaptığını söyleyecektir.
Ryan Shillington

Tam grafiği gerçekten istiyorum, bu yüzden her düğümü test etmek zorunda değilim tbh .... oldukça sıkıcı oluyor .... biraz zaman alsa bile, daha kullanışlı ama yapmanın bir yolunu görmüyorum yeni sürümlerde.
Dean Hiller
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.