Automatische Task Execution im Buildship Plugin

Wenn Sie mit Eclipse arbeiten, dann kennen Sie das Buildship Plugin. Das Plugin ist der Kleber der das Buildsystem Gradle in die IDE integriert. Mit der Version 3.1 des Plugins ist es nun möglich Tasks in Gradle bei der Projektsynchronisation und während des automatischen Builds zu starten. Dieses waren die höchsten bewerteten Wünsche auf GitHub. Hier will ich kurz die Möglichkeiten die sich daraus ergeben kurz darstellen.

Tasks während der Projekt Synchronisation ausführen

Die Gradle Projektsynchronisation importiert das Gradle Projekt in den Workspace und konfiguriert die Java Toolchain, damit alles zusammen funkioniert. Wie bereits angesprochen, wollen viele User während dessen eigene Tasks ausführen, um zum Beispiel Konfigurationen zu erstellen oder updaten. Das manuelle Ausführen dieser Aufgaben ist störend und auch fehleranfällig. Durch die automatische Ausführung der Aufgaben, kann der Entwickler sich auf das Coden konzentrieren.

Wie nutzt man das Feature?

Damit man das Feature nutzen kann, muss Gradle in der Version 5.4 oder höher vorhanden sein und Buildship mindestens in der Version 3.1. Ab Gradle 5.4 wurde ein neues Attribut synchronizationTasks in dem Eclipse Plugin eingeführt.

plugins {
    id 'eclipse'
}

task generateCustomConfig {
    doLast {
          println "Generating custom configuration..."
    }
}

eclipse {
    synchronizationTasks generateCustomConfig
}

Das war es auch schon. Wenn Sie nun das Projekt importieren oder synchronisieren, dann wird der Task generateCustomConfig ausgeführt und die Meldung erscheint in der Konsole.

Hinweis: Task synchronsization ist mit einer Referenz auf Task deklariert. Es können also unterschiedliche Typen verwendet werden: Strings um den Task Pfad zu spezifizieren, eine Liste von Tasks und vieles mehr. Grundsätzlich kann jeder task dependency Typ verwendet werden.

Ausführung von Tasks während des Eclipse build Vorgangs

Neben den bereits ober vorgestellten Feature ist als zweite Einstiegsmöglichkeit, dass einklinken in den Buildprozess nun möglich. Wenn also der Benutzer eine Resource ändert und ein Build angestoßen wird, kann man nun Aufgaben durchführen lassen. Zum Beispiel kann man einen Code Generator anwerfen oder Validierungen durchführen.

Der Aufruf erfolgt sehr ähnlich:

plugins {
    id 'eclipse'
}

task generateCode {
    doLast {
        println 'Generating some code...'
    }
}

eclipse {
    autoBuildTasks generateCode
}

Zusammenfassung

Die neuen Möglichkeiten die das Eclipse Buildship Plugin nun bietet sind sehr interessant und nehmen dem Entwickler viel Arbeit ab und können möglich Fehler vermeiden zu helfen, indem man Aufgaben automatisieren kann.

Buildship does not support JDK 13

In einem Test wollte ich mit den aktuellen Spring Tool Suite die neuen Features von Java 13 testen. Also habe ich die sourceCompatibility in build.gradle kurzerhabnd auf 13 gesetzt. Doch Eclipse konnte das Project nicht bauen. Nach kurzem suchen im Netz bin ich auf das Issue 1196 gestoßen. Das Eclipse Buildship Plugin wird erst in der Version 3.1.3 JDK 13 erkennen und unterstützen.

sourceCompatibility = 11 // can't use JDK 13 as buildship 3.1.3. See https://github.com/eclipse/eclipse.jdt.ls/issues/1196

Buildship 3

Die neue Version des Buildship Plugins wird die Version 3 sein. Die aktuelle stable Version ist 2.2.1.

Offen Punkte die noch zu fixen sind, sind in den Issues zu finden.

Neue Installationsquelle hinzufügen

http://download.eclipse.org/buildship/updates/e49/snapshots/3.x/

Installation überprüfen

Die erfolgreiche Installation kann in About Eclipse überprüft werden.

Neues Projekt mit Spring Tool Suite 4 erstellen

Nach dem Neustart von Eclipse kann jetzt ein Projekt mit dem Starter erstellt werden. Es kann nun Gradle Buildship 3.x ausgewählt werden.