Anleitung zum Gradle Wrapper

1. Übersicht

Gradle wird häufig von Entwicklern verwendet, um den Build-Lebenszyklus ihres Projekts zu verwalten. Es ist die Standardauswahl des Build-Tools für alle neuen Android-Projekte.

In diesem Tutorial lernen wir Gradle Wrapper kennen, ein begleitendes Dienstprogramm, das das Verteilen von Projekten erleichtert.

2. Gradle Wrapper

Um ein Gradle-basiertes Projekt zu erstellen, muss Gradle auf unserer Maschine installiert sein. Wenn unsere installierte Version jedoch nicht mit der Projektversion übereinstimmt, treten wahrscheinlich viele Inkompatibilitätsprobleme auf.

Gradle Wrapper, kurz Wrapper genannt , löst dieses Problem. Es ist ein Skript, das Gradle-Aufgaben mit einer deklarierten Version ausführt . Wenn die deklarierte Version nicht installiert ist, installiert Wrapper die erforderliche.

Die Hauptvorteile von Wrapper sind, dass wir:

  • Erstellen Sie ein Projekt mit Wrapper auf einem beliebigen Computer, ohne zuerst Gradle installieren zu müssen
  • Habe eine feste Gradle-Version. Dies führt zu wiederverwendbaren und robusteren Builds auf CI-Pipelines
  • Aktualisieren Sie einfach auf eine neue Gradle-Version, indem Sie die Wrapper-Definition ändern

In den nächsten Abschnitten werden Gradle-Aufgaben ausgeführt, bei denen Gradle lokal installiert werden muss.

2.1. Wrapper-Dateien generieren

Um Wrapper verwenden zu können, müssen bestimmte Dateien generiert werden. Wir werden diese Dateien mit der integrierten Gradle-Task namens Wrapper generieren . Beachten Sie, dass wir diese Dateien nur einmal generieren müssen.

Lassen Sie uns nun die Wrapper- Aufgabe in unserem Projektverzeichnis ausführen :

$ gradle wrapper 

Sehen wir uns die Ausgabe dieses Befehls an:

Schauen wir uns diese Dateien an:

  • gradle-wrapper.jar enthält Code zum Herunterladen der in der Datei gradle-wrapper.properties angegebenen Gradle-Distribution
  • gradle-wrapper.properties enthält Wrapper-Laufzeit-Eigenschaften - vor allem die Version der Gradle-Distribution, die mit dem aktuellen Projekt kompatibel ist
  • gradlew ist das Skript, das Gradle-Aufgaben mit dem Wrapper ausführt
  • gradlew.bat ist das gradlew- äquivalente Batch-Skript für Windows-Computer

Standardmäßig generiert die Wrapper- Task Wrapper-Dateien mit der aktuell auf dem Computer installierten Gradle-Version. Bei Bedarf können wir eine andere Version angeben:

$ gradle wrapper --gradle-version 6.3 

Wir empfehlen, die Wrapper-Dateien in das Quellcodeverwaltungssystem wie GitHub einzuchecken. Auf diese Weise stellen wir sicher, dass andere Entwickler das Projekt ausführen können, ohne Gradle installieren zu müssen.

2.2. Ausführen von Gradle-Befehlen mit Wrapper

Wir können jede Gradle Aufgabe mit dem Wrapper laufen durch Ersetzen gradle mit gradlew .

Um die verfügbaren Aufgaben aufzulisten , können wir den Befehl gradlewasks verwenden :

$ gradlew tasks

Werfen wir einen Blick auf die Ausgabe:

Help tasks ---------- buildEnvironment - Displays all buildscript dependencies declared in root project 'gradle-wrapper'. components - Displays the components produced by root project 'gradle-wrapper'. [incubating] dependencies - Displays all dependencies declared in root project 'gradle-wrapper'. dependencyInsight - Displays the insight into a specific dependency in root project 'gradle-wrapper'. dependentComponents - Displays the dependent components of components in root project 'gradle-wrapper'. [incubating] help - Displays a help message. model - Displays the configuration model of root project 'gradle-wrapper'. [incubating] outgoingVariants - Displays the outgoing variants of root project 'gradle-wrapper'. projects - Displays the sub-projects of root project 'gradle-wrapper'. properties - Displays the properties of root project 'gradle-wrapper'. tasks - Displays the tasks runnable from root project 'gradle-wrapper'.

Wie wir sehen können, ist die Ausgabe dieselbe, die wir erhalten würden, wenn diese Aufgabe mit dem Befehl gradle ausgeführt wird.

3. Häufige Probleme

Schauen wir uns nun einige häufige Probleme an, die bei der Arbeit mit Wrapper auftreten können.

3.1. Globaler .gitignore, der alle Jar-Dateien ignoriert

Einige Organisationen erlauben Entwicklern nicht, JAR-Dateien in ihr Quellcodeverwaltungssystem einzuchecken. In der Regel haben solche Projekte eine Regel in der globalen Gitignore- Datei, um alle JAR-Dateien zu ignorieren. Daher wird die Datei gradle-wrapper.jar nicht in das Git-Repository eingecheckt. Aus diesem Grund können Wrapper-Tasks nicht auf anderen Computern ausgeführt werden. In solchen Fällen müssen wir die Datei gradle-wrapper.jar hinzufügen, um zwangsweise zu giten :

git add -f gradle/wrapper/gradle-wrapper.jar

In ähnlicher Weise haben wir möglicherweise eine projektspezifische Gitignore- Datei, die JAR-Dateien ignoriert. Wir können das Problem beheben, indem wir entweder die .gitignore- Regel lockern oder die Wrapper-JAR-Datei wie oben gezeigt mit Nachdruck hinzufügen.

3.2. Fehlender Wrapper-Ordner

Beim Einchecken in ein Wrapper-basiertes Projekt wird möglicherweise vergessen, den im gradle- Ordner vorhandenen Wrapper- Ordner einzuschließen . Wie wir oben gesehen haben, enthält der Wrapper- Ordner zwei wichtige Dateien: gradle-wrapper.jar und gradle-wrapper.properties.

Ohne diese Dateien werden beim Ausführen von Gradle-Aufgaben mit dem Wrapper Fehler angezeigt. Daher müssen wir den Wrapper- Ordner im Quellcodeverwaltungssystem einchecken .

3.3. Wrapper-Dateien entfernt

Gradle-basierte Projekte enthalten einen .gradle- Ordner, in dem der Cache gespeichert wird , um Gradle-Aufgaben zu beschleunigen. Manchmal müssen wir den Cache leeren, um Probleme mit Gradle-Builds zu beheben. Normalerweise entfernen wir den gesamten .gradle- Ordner. Möglicherweise verwechseln wir den Wrapper- Gradle- Ordner jedoch mit dem .gradle- Ordner und entfernen ihn ebenfalls. Danach werden wir definitiv Probleme haben, wenn wir versuchen, Gradle-Aufgaben mit dem Wrapper auszuführen.

Wir können dieses Problem lösen, indem wir die neuesten Änderungen aus der Quelle ziehen . Alternativ können wir die Wrapper-Dateien neu generieren.

4. Fazit

In diesem Tutorial haben wir Gradle Wrapper und seine grundlegende Verwendung kennengelernt. Wir haben auch einige häufige Probleme kennengelernt, die bei der Arbeit mit Gradle Wrapper auftreten können.

Wie üblich können wir das Projekt mit generierten Gradle Wrapper-Dateien auf GitHub überprüfen.