Java-Buildtools

Im Java-Umfeld haben sich in den letzten Jahren vor allem die beiden Buildtools ANT und Maven etabliert. Doch seit etwas mehr als einem Jahr macht Gradle den beiden Konkurrenz. Das ist doch schon mal Grund genug das Tool „Gradle“ ein wenig genauer zu betrachten.

Vor ein paar Tagen wurde die Version 1.5 des Buildtools Gradle freigegeben. Die Entwicklung des neuen Buildtools scheint rasant vorwärts zu schreiten. Doch wie genau unterscheidet sich Gradle überhaupt von Apache ANT und Maven?

Gradle selbst behauptet von sich, dass es die Vorzüge von ANT und Maven vereint. Auf der einen Seite sollen Projekte schnell gebaut werden können, ohne dass man ein komplexes Build-Skript schreiben muss, so wie das in Maven möglich ist. Ebenso wurde aus Maven das Dependency-Management übernommen und so kann man in Gradle sogar Maven-Repositories verwenden. Daneben ermöglicht Gradle aber auch die Verwendung von Ivy-Repositories und sogar lokale Ordner können als Repository konfiguriert werden.
Dabei will Gradle aber möglichst flexibel bleiben. Ist es bei Maven nicht immer ohne Probleme möglich einen Build an seine eigenen Bedürfnisse anzupassen (weil man beispielsweise den Maven-Standard verlassen will), so ist dies in Gradle problemlos möglich. An dieser Stelle geht Gradle den weg von ANT und diesen dabei sogar so weit, dass ANT-Tasks in Gradle aufgerufen werden können.

Auch eine IDE-Integration bietet Gradle an. So gibt es beispielsweise ein Plugin für Eclipse, das es erlaubt die Gradle-Tasks in Eclipse einzusehen und aufzurufen. Umgekehrt kennt aber auch Gradle verschiedene IDE-Umgebungen und kann im Rahmen eines Builds eventuell benötigte IDE-Dateien (beispielsweise die .projekt-Dateien für Eclipse) erstellen. Möglich wird dies durch ein so genanntes  Gradle-Plugin.

In einem ersten Testprojekt war es sehr einfach möglich ANT durch Gradle abzulösen. Der große Vorteil dabei ist nicht nur, dass Gradle die beiden Welten von ANT und Maven vereint, sondern dass die dabei entstehenden Build-Skripte angenehm klein sind. Erreicht wird dies oft durch die schon angesprochenen Gradle-Plugins. Diese gibt es übrigens von Haus aus neben Eclipse auch für Checkstyle, für Java selbst (sozusagen das Standard-Gradle-Plugin) und auch für jdepend. Selbst Jacoco ist als optionales Gradle-Plugin auf Github erhältlich, ich bevorzuge hier momentan allerdings die Einbindung von Jacoco mit Hilfe eines eigenen gradle-buildfiles (das gibt es ebenfalls auf Github).

Gradle kann noch weit mehr als hier angedeutet und ist im Kern trotzdem angenehm leicht zu erlernen. Für die nächsten Projekte ist Gradle für mich auf jeden Fall das Buildtool der Wahl (ich konnte bisher noch keinen einzigen Nachteil an Gradle finden… es wäre also wohl nicht besonders klug bei meinem momentanen Favoriten ANT zu bleiben).

Schreibe einen Kommentar