Einführung in Build-Werkzeuge

Einführung in Build-Werkzeuge – Anwendungsentwickler-Podcast #97

Um Werkzeuge, die dem Entwickler beim Bauen seiner Software viel Arbeit abnehmen, geht es in der siebenundneunzigsten Episode des Anwendungsentwickler-Podcasts.

Inhalt

Die Episode ist wie meine Einführung in die Versionsverwaltung mit Git in mehrere Fragen aufgeteilt. Los geht es mit allgemeinen Fragen zu Build-Werkzeugen. Dann folgen Fragen zum Einsatz im eigenen Unternehmen. Und zuletzt gehen auf die Details von Gradle ein.

Allgemein

Die folgenden Fragen sind unabhängig vom konkreten Build-Werkzeug.

  1. Was ist ein Build?
    • Der Vorgang, der alle Aktionen umfasst, die zum Erstellen einer lauffähigen und deploybaren Software aus Basisartefakten wie Sourcecode nötig sind.
  2. Was macht ein Build-Werkzeug?
    • Mit einem Build-Werkzeug können alle notwendigen Build-Schritte automatisiert werden.
  3. Was sind die Vorteile eines Build-Werkzeugs?
    • Die Software kann automatisiert und damit schneller und verlässlicher gebaut werden.
    • Kopfmonopole werden abgebaut.
    • „Works on my machine“ wird verhindert.
    • Ein automatischer Build ist die Grundlage für Continuous Integration/Delivery/Deployment.
  4. Was ist ein Build-Script?
    • In einem Build-Script werden die notwendigen Build-Schritte definiert. Es wird vom Build-Werkzeug wie Programmcode ausgeführt.
  5. Warum sollten Build-Scripts versioniert werden?
    • Letztlich sind die Build-Scripts ausführbarer „Code“, der ganz normal mit versioniert werden sollte. Allein, um Änderungen am Build mit Änderungen im Code zu synchronisieren und später auch noch frühere Builds nachstellen zu können.
  6. Welche Aktionen kann ein Build-Werkzeug bei einem Build durchführen?
    • Abhängigkeiten auflösen (z.B. fremde JARs oder DLLs einbinden)
    • Kompilieren des Codes
    • Testen (mit Analyse der Code Coverage)
    • Statische Code-Analyse durchführen (z.B. Code-Style, bestimmte Bugs)
    • Paketieren der Anwendung (z.B. als JAR, DLL)
    • Snapshots der Software erzeugen und in ein Artefakt-Repository einstellen
    • Deployment der Anwendung auf ein Zielsystem
    • Maschinenunabhängig Projekte für die jeweilige IDE erstellen
    • Minification von Artefakten (z.B. CSS und JavaScript)
    • Obfuscation zum Schutz des Quellcodes
    • Technische Dokumentation der Software erzeugen
    • Alles, was man sonst noch so manuell tun müsste
  7. Wie hängt das Build-Werkzeug mit Continuous Integration zusammen?
    • Ohne automatischen Build ist kein CI möglich!
  8. Welche bekannten Build-Werkzeuge gibt es für Java, .NET, Ruby und C?

Dein Unternehmen

Diese Fragen solltest du dir stellen, wenn du in deinem Unternehmen mit einem Build-Werkzeug arbeiten willst/musst.

  1. Welche konkreten Build-Werkzeuge setzt dein Unternehmen ein?
  2. Was musst du tun, um dieser auf deiner Maschine nutzen zu können?
  3. Welche Konventionen musst du ggfs. einhalten, um sie in deinem Projekt nutzen zu können?
    • z.B. Ordnerstruktur des Projekts, Benennung der Komponenten.
  4. Wo findest du Vorlagen für eigene Build-Scripts?
  5. Welche Dateien gehören zum Build-Script deines Unternehmens und was sind ihre jeweiligen Aufgaben?
  6. Welche Ordner und Dateien deines Projekts solltest du von der Versionierung ausschließen?

Gradle

Zum Schluss kommen noch ein paar einleitende Fragen zum konkreten Werkzeug Gradle.

  1. Was ist Gradle?
    • Ein Build-Werkzeug für Java, das inzwischen z.B. der Standard für Android-Projekte ist.
  2. Was sind die Vorteile von Gradle gegenüber Maven und Ant?
    • Gradle verwendet eine flexible und mächtige DSL für die Build-Scripts und kann sowohl deklarativ, als auch imperativ verwendet werden.
  3. Was ist der Gradle Wrapper?
    • Eine Möglichkeit, um Gradle in der passenden Version für das aktuelle Build-Script automatisch herunterzuladen und damit den Build durchzuführen.
  4. Mit welchem Befehl startest du einen normalen Build mit Gradle?
    • gradle build
  5. Mit welchem Befehl räumst du dein Projektverzeichnis mit Gradle auf?
    • gradle clean
  6. Mit welchem Befehl erzeugst du ein importierbares Eclipse-Projekt mit Gradle?
    • gradle eclipse

Literaturempfehlungen

Wenn du tiefer in Gradle einsteigen möchtest (was natürlich nur sinnvoll ist, wenn du es selbst einsetzt), empfehle ich dir dieses Buch von Joachim Baumann. Es hat uns beim Erstellen einer Vorlage für unsere eigenen Build-Scripts sehr geholfen.

Gradle: Ein kompakter Einstieg in das Build-Management-System (Affiliate)*

Links

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax