Gradle: Unterstützung zur effizienten Softwareentwicklung voll ausnutzen

22. Januar 2013Moritz Zimmer

Mit Gradle steht Softwareentwicklern und -architekten ein innovatives Build-Werkzeug zur professionellen Softwareentwicklung zur Verfügung. Im Folgenden werden einige Optionen aufgezeigt, wie Gradle zur Unterstützung einer effizienten Entwicklung von (Java-) Anwendungen eingesetzt werden kann.

Automatisierung der Gradle-Installation

Die Installation von Gradle kann durch die Verwendung des Gradle Wrapper vollständig automatisiert erfolgen. Eine manuelle und damit zeitaufwändige sowie potenziell fehleranfällige Installation des Build-Systems entfällt.

Als weitere Vorteile lassen sich hier:

  • die konsistente Verwendung einer Gradle-Version in allen lokalen Entwicklungsumgebungen,
  • die Möglichkeit der zentralen Änderung der Gradle-Version mittels Anpassung der Wrapper-Dateien,
  • sowie die Unterstützung des Wrappers durch Continuous Integration Server (siehe bspw. Jenkins-Plugin) und IDEs (siehe bspw. Gradle STS)

nennen.

Automatisierung der IDE-Integration

Gradle beinhaltet Plugins zur vollautomatischen Generierung von IDE-spezifischen Dateien für Eclipse und IDEA. Die DSL ermöglicht dabei eine feingranulare Konfiguration dieser Dateien bis hin zur direkten XML-Manipulation. Die Generierung der Eclipse-Datei zur Festlegung des Server-Deployments kann bspw. per DSL wie folgt beeinflusst werden:

eclipse.wtp.component {
      // sets context to root in org.eclipse.wst.common.component
      contextPath = '/'
}

Manuelle Anpassungen der IDE-Dateien können somit eliminiert werden, so dass diese auch nicht unter Versionsverwaltung gestellt werden müssen und sollten.

Entwickler können des Weiteren von der nativen Gradle-Integration in Eclipse und IDEA profitieren. Das STS Plugin bietet beispielsweise einen Import-Dialog für Gradle-Projekte an, wodurch eine manuelle Ausführung des eclipse Task an der Kommandozeile entfallen kann. Weitere Vorteile der nativen Integration:

  • Syntax-Highlighting und Autovervollständigung für die Bearbeitung von Gradle Dateien
  • direkte Ausführung von Gradle Tasks aus Eclipse heraus
  • Aktualisierung des Eclipse Build Path per Kontext-Menü

Durchsetzung von Entwicklungsvorgaben

Eine große Stärke von Gradle besteht in der Möglichkeit zur Definition von Entwicklungsvorgaben, zum Beispiel um:

  • die Verwendung nur bestimmter Repositories (z.B. den internen Nexus) für die Auflösung von Abhängigkeiten zu erlauben
  • bestimmte Bibliotheken generell auszuschließen (z.B. zur Verwendung von SLF4J anstelle von commons-logging in Spring Anwendungen)
  • die Kompatibilität des Source-Codes zu einer bestimmten Java-Version sicherzustellen (siehe folgendes Code-Fragment)

tasks.withType(Compile) {
        doFirst {
            assert project.sourceCompatibility.equals("1.6") : "Source
compatibility of $name was changed!"
        }
}

Die Einhaltung dieser Entwicklungsvorgaben kann bei der Build-Ausführung durch Gradle sichergestellt werden.

Strukturierung des Builds

Gradle verfolgt einen deklarativen Ansatz zur Beschreibung von Build-Prozessen, gepaart mit der Möglichkeit zur einfachen Erweiterung der DSL um eigene Sprachkonstrukte oder auch der Anpassung des Verhaltens integrierter Standardelemente.

Zur Gewährleistung der Wartbarkeit des Builds sollten dabei die vorhandenen Möglichkeiten zur sinnvollen Strukturierung von Funktionalität in separate Plugins verwendet werden. So können bspw. zusammenhängende Deklarationen der IDE-Integration oder aber der Testdurchführung in eigene Gradle-Skripte ausgelagert werden:

// include script plugins
apply from: "eclipse.gradle"
apply from: "testing.gradle"

Erweiterungen und Anpassungen der imperativen Schicht sollten in komplett eigenständige Plugins ausgelagert werden, die in Java und/oder Groovy implementiert werden können.

Fazit

Gradle ermöglicht es, projektspezifische, wartbare Build-Prozesse zu realisieren, die entscheidend zu einer effizienten Softwareentwicklung beitragen können.

Setzen Sie Gradle zur Entwicklung von (Java-) Anwendungen ein? Welche Erfahrungen haben Sie gemacht?

Moritz Zimmer Moritz Zimmer arbeitet als Senior Software Engineer und Projektleiter bei adesso. Sein Tätigkeitsschwerpunkt liegt in der Konzeption und Implementierung von Softwaresystemen auf Basis von Java EE und Spring. Aktuelle Interessensschwerpunkte von Moritz Zimmer sind Gradle und Solr.
Artikel bewerten:
1 Star2 Stars3 Stars4 Stars5 Stars
Loading...

Kommentare

Bianca Batsch 22. Januar 2013

Für Interessierte, die JUG-Dortmund hat im Feburar einen Vortrag zu diesem Thema geplant: https://www.xing.com/events/gradle-1193319

Viele Grüße
Bianca

Kommentar hinzufügen:

Ihr Kommentar: