849 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.

14voto

Christian Vielma Punkte 13693

Ich fand es auch nützlich, dies auszuführen:

./gradlew dI --dependency 

Dies zeigt, wie Abhängigkeiten aufgelöst werden (dependencyInsight) und hilft Ihnen dabei, Debugging durchzuführen, um festzustellen, wo Sie Bibliotheken in Ihrer build.gradle erzwingen oder ausschließen müssen

Siehe: https://docs.gradle.org/current/userguide/tutorial_gradle_command_line.html

11voto

Shailesh Mamgain Punkte 161

In Android Studio

1) Öffnen Sie das Terminal und stellen Sie sicher, dass Sie sich im Stammverzeichnis des Projekts befinden.

2) Führen Sie ./gradlew app:dependencies aus (wenn Sie den Gradle-Wrapper nicht verwenden, versuchen Sie es mit gradle app:dependencies)

Beachten Sie, dass das Ausführen von ./gradle dependencies Ihnen nur den Abhängigkeitsbaum des Stammverzeichnisses des Projekts gibt, daher ist es wichtig, app in obiger Weise zu erwähnen, d.h. ./gradlew app:dependencies.

8voto

林果皞 Punkte 6931

Beachten Sie, dass Sie möglicherweise etwas wie ./gradlew ::dependencies ausführen müssen, wenn das Modul vor dem Erreichen seiner build.gradle-Datei zusätzliche Verzeichnisse hat. Bei Unsicherheit führen Sie ./gradlew tasks --all aus, um den Namen zu überprüfen.

8voto

Musa Punkte 3845

Versuchen Sie entweder dies

./gradlew dependencies > ~/dependencies.txt

oder

gradle dependencies > ~/dependencies.txt`

was die Abhängigkeiten in einer Textdatei unter dem Benutzerverzeichnis schreiben sollte.

7voto

codeWhisperer Punkte 1216

Wenn Sie alle Abhängigkeiten am Ende innerhalb von zwei Schritten in einer einzigen Datei haben möchten. Fügen Sie dies zu Ihrer build.gradle.kts im Stammverzeichnis Ihres Projekts hinzu:

project.rootProject.allprojects {
    apply(plugin="project-report")

    this.task("allDependencies", DependencyReportTask::class) {
        evaluationDependsOnChildren()
        this.setRenderer(AsciiDependencyReportRenderer())
    }

}

Dann anwenden:

./gradlew allDependencies | grep '\-\-\-' | grep -Po '\w+.*$' | awk -F ' ' '{ print $1 }' | sort | grep -v '\{' | grep -v '\[' | uniq | grep '.\+:.\+:.\+'

Dies gibt Ihnen alle Abhängigkeiten in Ihrem Projekt und Unterprojekten sowie alle Drittanbieterabhängigkeiten.

Wenn Sie dies auf programmatische Weise erledigen möchten, benötigen Sie einen benutzerdefinierten Renderer der Abhängigkeiten - Sie können beginnen, indem Sie den AsciiDependencyReportRenderer erweitern, der standardmäßig einen ASCII-Graph der Abhängigkeiten ausgibt.

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