Gradle 4.8

Letzte Woche wurde das weitverbreitete Build Tool Gradle in der neuen Version 4.8 veröffentlicht. Hier werden die wichtigsten Features kurz zusammengefasst und erklärt.

Neben dem Update auf Kotlin 1.2.41 (Kotlin DSL 0.17.5) gibt es drei größere Neuerungen in Gradle Version 4.8.

Dependency Locking

Laut den Gradle-Entwicklern ist das wichtigste Feature in Gradle 4.8 das sogenannte Dependency-Locking. Insbesondere bei größeren Projekten mit sehr vielen Abhängigkeiten kam es in der Vergangenheit immer wieder zu unerklärbarem Verhalten, wenn aufgrund dynamischer Versionierung auf einmal die neue Version einer Dependency in einem älteren Build verwendet werden soll. So kann es zwar sein, dass der Build ursprünglich funktioniert hatte, jetzt jedoch aufgrund einer neuen Version einer einzelnen Abhängigkeit plötzlich fehlschlägt.

Dagegen gibt es nun das Dependency-Locking. Hier geht es darum, die Versionen aller Abhängigkeiten zum Releasezeitpunkt inplace zu fixieren. Das bedeutet, dass beim Release zwar mit den aktuellen Versionen aller Abhängigkeiten kompiliert wird, all diese Versionen jedoch anschließend festgeschrieben werden. Somit lässt sich der gleiche Build zu einem späteren Zeitpunkt deterministisch wiederholen, da genau bekannt ist, welche konkreten Versionen der einzelnen Abhängigkeiten verwendet wurden. Gleichzeitig können weitere Entwicklerbuilds weiterhin mit den aktuellen Versionen aller Abhängigkeiten weiterarbeiten und werden erst für den nächsten Release wieder fixiert.

Eine detaillierte Einführung in das Dependency-Locking in Gradle ist im offiziellen Userguide enthalten.

Verbessertes inkrementelles Compiling

Seit Gradle 2.1 lässt sich Java Code bereits inkrementell kompilieren. Hierbei geht es darum, die Builds schneller und effizienter zu machen, indem so wenige Ausgabedateien wie möglich verändert werden. Dieses inkrementelle Compiling wurde nun erweitert. So lassen sich mit Gradle 4.8 nun auch Annotationen inkrementell kompilieren. Wie dies im Detail funktioniert, wird im Userguide erklärt. Außerdem führt ein Fehler während der inkrementellen Kompilierung nun nicht mehr gleich zum Abbruch des gesamten Compileprozesses. Stattdessen wird zunächst ein kompletter Recompile ausgelöst, der das Problem gegebenenfalls bereits behebt.

Updates für die Publishing-Plugins für Maven und Ivy

Auch für die Publishing-Plugins für Maven und Ivy gibt es einige Neuerungen. Mit Gradle 4.8 können nun alle Artefakte eines Releases digital signiert werden. Außerdem gibt es jeweils eine neue, dedizierte und typsichere Domain Specific Language (DSL), mit der sich eine generierte Maven-POM bzw. ein generierter Ivy-Module-Descriptor anpassen lässt. Zusätzlich lassen sich nun konfigurationsweit Abhängigkeiten ausschließen.

Die beiden Plugins sind außerdem nicht länger incubating, sondern offiziell “stable for use” und das alte Maven Plugin dafür deprecated.

Eine vollständige Übersicht über alle neuen Features und Verbesserungen ist den offiziellen Release Notes zu entnehmen.

Short URL for this post: https://wp.me/p4nxik-36E
This entry was posted in Build, config and deploy and tagged , , , . Bookmark the permalink.

Leave a Reply