© rdonar/Shutterstock.com
Gradle 6: Dependency-Management reloaded

Der nächste große Schritt


Das kürzlich erschienene Release 6 des modernen Build-Tools bringt eine Menge neuer Features, die es erlauben, Java-, Groovy-, Kotlin- und Scala-Projekte besser zu strukturieren und zu modularisieren. Ein Highlight ist dabei die Einführung des Gradle-Module-Metadata-Formats, um Module mit reichhaltigen Metadaten zu publizieren und wiederzuverwenden.

Gradle wurde über die letzten Jahre um immer mehr Features erweitert, die es ermöglichen, Projekte besser zu strukturieren und einzelne Teile besser zu isolieren. Der nächste große Schritt wurde nun mit Gradle 6 getan, das neue Funktionalitäten zur Verwaltung von Abhängigkeiten bereitstellt, die über Projekt- und Modulgrenzen hinweg genutzt werden können. Ein zentrales Konzept dabei ist, dass jedes Softwaremodul mehrere Varianten bereitstellt, aus denen je nach Kontext ausgewählt wird.

In diesem Artikel stellen wir die interessantesten Features anhand eines Beispielprojekts vor, das zum Selbsterkunden auf GitHub bereitsteht [1]. Es handelt sich dabei um ein Gradle-Multiprojekt, in dem mehrere Projekte gemeinsam in einem Build definiert werden. Jedes dieser Projekte kann Abhängigkeiten zu anderen Projekten und zu publizierten Modulen deklarieren (in diesem Artikel verwenden wir den Begriff „Projekt“ für lokale Projekte, die Teil des Builds sind, und den Begriff „Modul“ für publizierte Bibliotheken).

Um die Strukturierung in mehrere Projekte zu demonstrieren, definieren wir drei Java-Projekte: :app, :services und :data (Abb. 1). Als Beispiel für ein Modul verwenden wir Apache Commons Lang. Das Multiprojekt kann auch in einem Gradle Build Scan betrachtet werden [2] (Kasten: „Gradle Build Scans“).

johannes_gradle_1.tif_fmt1.jpgAbb. 1: Beispielprojekt

Gradle Build Scans

Startet man einen Gradle Build mit dem Parameter --scan, werden diverse Daten über den Build gesammelt und in einem Build Scan aufbereitet zur Verfügung gestellt. Der Build Scan ist über einen geheimen Link auf scans.gradle.com einzusehen und erlaubt es, den Build zu analysieren, beispielsweise auf Performanceprobleme.

Sie können das mit dem Beispielprojekt [1] testen oder direkt einen Build Scan betrachten, der während der Arbeit an diesem Artikel entstand [2]. Im Kontext des Artikels ist besonders die Sicht auf die Dependencies des Projekts interessant.

Separieren von API- und Implementierungsabhängigkeiten

Arbeitet man an einem existierenden Projekt, gibt es irgendwann viele Abhängigkeiten auf den Klassenpfad des Projekts. Das ist der Tatsache geschuldet, dass alle transit...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang