812 Stimmen

Mit Gradle den Abhängigkeitsbaum finden

Ist es möglich, Gradle zu verwenden, um einen Baum von Abhängigkeiten zu erstellen?

Ich habe ein Projekt und möchte gerne alle Abhängigkeiten herausfinden, um es ein wenig mit Vorwärtsdeklarationen usw. bereinigen zu können.

33voto

David Miguel Punkte 9003

Wenn Sie Ihre Abhängigkeiten in einem Diagramm visualisieren möchten, können Sie das gradle-dependency-graph-generator Plugin verwenden.

Im Allgemeinen befindet sich die Ausgabe dieses Plugins im build/reports/dependency-graph Verzeichnis und enthält drei Dateien (.dot|.png|.svg), wenn Sie die Version 0.5.0 des Plugins verwenden.

Beispiel für ein Abhängigkeitsdiagramm in einer echten App (Schachuhr):

Graph

33voto

Dupinder Singh Punkte 6087

Für mich war es einfach ein Befehl

in build.gradle plugin hinzufügen

apply plugin: 'project-report'

und dann gehe zum cmd und führe folgenden Befehl aus

./gradlew htmlDependencyReport

Dies gibt mir einen HTML-Bericht WOW Html Bericht


Oder wenn Sie den Bericht in einer Textdatei möchten, um die Suche zu erleichtern, verwenden Sie den folgenden Befehl

gradlew dependencyReport

Geben Sie hier eine Bildbeschreibung ein

Das ist alles mein Herr.

25voto

tryman Punkte 3243

Die Dinge haben sich in Gradle weiterentwickelt, daher glaube ich, dass diese Frage eine weitere Antwort verdient.
Seit Gradle 4.3 wurden "Build-Scans" eingeführt. Alle relevanten Informationen sind in den Gradle-Dokumenten verfügbar (1, 2). Für mich scheint dies jetzt der einfachste Weg zu sein, um Ihre Abhängigkeiten (und im Allgemeinen Ihren Build) auf eine klare, organisierte Weise zu überprüfen.

Sie sind sehr einfach zu erstellen, führen Sie einfach aus:

gradle build --scan  

(oder ./gradlew build --scan wenn Sie einen Wrapper verwenden)

Dies erzeugt einen zufällig generierten Link, unter dem Sie Ihren Scan sehen können. Wenn Sie diesen Link öffnen, geben Sie Ihre E-Mail-Adresse ein und erhalten die volle Kontrolle über den Link: z. B. können Sie ihn teilen oder löschen. Es enthält sehr viele Informationen über Ihren Build, nicht nur über Abhängigkeiten. Sie können Ihre Abhängigkeiten sehen, ihre Hierarchien, das Repository, aus dem sie bezogen wurden, aber auch viele andere Informationen über Ihren Build, nämlich seine Leistung (was bei großen komplexen Builds von Interesse ist), Ihre Tests, sogar Ihre Konsolenausgabe und Ihre Systemkonfiguration, welche JDK und JVM verwendet wurden, maximale Heap-Größe usw.

Das ist ein Screenshot von einem Mock-Projekt:

Beispiel für Build-Scan

Ein Build-Scan ist eine gemeinsam nutzbare Aufzeichnung eines Builds, die Einblicke in das Geschehene und Warum bietet. Sie können einen Build-Scan unter scans.gradle.com kostenlos erstellen.

Beachten Sie jedoch, dass Informationen über Ihren Build-Prozess an die Gradle-Server gesendet werden. Sie haben die volle Kontrolle, um sie zu löschen, wenn Sie mit Ihrer Überprüfung fertig sind.

Sie können Build-Scans auch mit Gradle-Versionen vor 4.3 verwenden, Sie müssen nur das Scans-Plugin manuell in Ihr Build-Skript einfügen.

Bearbeiten:
Unter Berücksichtigung einiger Kommentare, einige zusätzliche Hinweise:
1) Es ist sehr schwierig, dies aus Versehen oder ohne Verständnis dafür zu tun, dass einige Informationen über Ihren Build online sein werden (privat für Sie, mit der Möglichkeit, sie zu löschen, aber immer noch online).

Wenn Sie gradle build --scan ausführen, erscheint die folgende Meldung:

Das Veröffentlichen eines Build-Scans auf scans.gradle.com erfordert die Annahme der von Gradle definierten Nutzungsbedingungen
unter https://gradle.com/terms-of-service. Akzeptieren Sie diese Bedingungen? [Ja, Nein]

Sie müssen explizit Ja schreiben und dann wird die Meldung fortgesetzt:

Build-Scan wird veröffentlicht...  
https://gradle.com/s/a12en0dasdu

2) Mit Gradle Enterprise können Sie Build-Scans auf Ihren eigenen Servern hosten. Ich habe jedoch keine Erfahrung damit und mein vorgeschlagener Ansatz bezog sich auf die Standard-Gradle-Distribution, bei der Gradle-Server für Ihre Build-Scans verwendet werden.

3) Gradle selbst fördert die Build-Scans als Lösung für die meisten Ihrer Build-Probleme.

25voto

Remy Punkte 788

Für Android, geben Sie dies im Terminal ein

gradlew app:dependencies

Es werden alle Abhängigkeiten aufgelistet und diejenigen mit neueren Versionen, die Sie wie folgt aktualisieren können

com.android.support:customtabs:26.1.0 -> 27.1.1 (*)

18voto

Soufiane Sakhi Punkte 719

Für aktuelle Versionen von Gradle (ich habe es mit der Version 6.4.1 getestet):

gradle dependencies --configuration compileClasspath

oder wenn Sie den Gradle Wrapper verwenden:

gradlew dependencies --configuration compileClasspath

Beim Bauen für Android mit den Kompilierungsprofilen 'debug' und 'release' können die Konfigurationen debugCompileClasspath und releaseCompileClasspath anstelle von compileClasspath verwendet werden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X