Gids voor de Gradle Wrapper

1. Overzicht

Gradle wordt vaak gebruikt door ontwikkelaars om de build-lifecycle van hun project te beheren. Het is de standaardkeuze van een build-tool voor alle nieuwe Android-projecten.

In deze tutorial leren we over Gradle Wrapper, een bijbehorend hulpprogramma dat het gemakkelijker maakt om projecten te distribueren.

2. Grijp Wrapper

Om een ​​op Gradle gebaseerd project te bouwen, moeten we Gradle in onze machine hebben geïnstalleerd. Als onze geïnstalleerde versie echter niet overeenkomt met de versie van het project, zullen we waarschijnlijk met veel incompatibiliteitsproblemen te maken krijgen.

Gradle Wrapper, ook wel genoemd Wikkel kortom, lost dit probleem op. Het is een script dat Gradle-taken uitvoert met een gedeclareerde versie. Als de gedeclareerde versie niet is geïnstalleerd, installeert Wrapper de vereiste versie.

De belangrijkste voordelen van Wrapper zijn dat we:

  • Bouw een project met Wrapper op elke machine zonder eerst Gradle te hoeven installeren
  • Zorg voor een vaste Gradle-versie. Dit levert herbruikbare en robuustere builds op CI-pijpleidingen op
  • Upgrade eenvoudig naar een nieuwe Gradle-versie door de Wrapper-definitie te wijzigen

In de volgende secties zullen we Gradle-taken uitvoeren waarvoor Gradle lokaal moet worden geïnstalleerd.

2.1. Wrapper-bestanden genereren

Om Wrapper te gebruiken, moeten we een aantal specifieke bestanden genereren. We genereren deze bestanden met behulp van de ingebouwde Gradle-taak genaamd wikkel. Merk op dat we deze bestanden maar één keer hoeven te genereren.

Laten we nu het wikkel taak in onze projectdirectory:

$ gradle wrapper 

Laten we de uitvoer van deze opdracht bekijken:

Laten we eens kijken wat deze bestanden zijn:

  • gradle-wrapper.jar bevat code voor het downloaden van de Gradle-distributie die is gespecificeerd in het gradle-wrapper.properties het dossier
  • gradle-wrapper.properties bevat Wrapper-runtime-eigenschappen - het belangrijkste is de versie van de Gradle-distributie die compatibel is met het huidige project
  • gradlew is het script dat Gradle-taken uitvoert met de Wrapper
  • gradlew.bat is de gradlew equivalent batch-script voor Windows-machines

Standaard is het wikkel task genereert Wrapper-bestanden met de Gradle-versie die momenteel op de machine is geïnstalleerd. We kunnen indien nodig een andere versie specificeren:

$ gradle wrapper --gradle-versie 6.3 

We raden aan om de Wrapper-bestanden in te checken inhet broncontrolesysteem zoals GitHub. Op deze manier zorgen we ervoor dat andere ontwikkelaars het project kunnen uitvoeren zonder Gradle te hoeven installeren.

2.2. Gradle-opdrachten uitvoeren met Wrapper

We kunnen elke Gradle-taak uitvoeren met de Wrapper door deze te vervangen gradle met gradlew.

Om de beschikbare taken weer te geven, kunnen we de gradlew taken opdracht:

$ gradlew taken

Laten we de output eens bekijken:

Help-taken ---------- buildEnvironment - Geeft alle buildscript-afhankelijkheden weer die zijn gedeclareerd in het rootproject 'gradle-wrapper'. componenten - Geeft de componenten weer die zijn geproduceerd door het rootproject 'gradle-wrapper'. [incubatie] afhankelijkheden - Toont alle afhankelijkheden die zijn gedeclareerd in het rootproject 'gradle-wrapper'. dependencyInsight - Toont het inzicht in een specifieke afhankelijkheid in het rootproject 'gradle-wrapper'. IndependComponents - Toont de afhankelijke componenten van componenten in het rootproject 'gradle-wrapper'. [incubating] help - Geeft een helpbericht weer. model - Toont het configuratiemodel van rootproject 'gradle-wrapper'. [incubating] outgoingVariants - Toont de uitgaande varianten van rootproject 'gradle-wrapper'. projects - Toont de subprojecten van het rootproject 'gradle-wrapper'. properties - Toont de eigenschappen van het rootproject 'gradle-wrapper'. taken - Toont de taken die kunnen worden uitgevoerd vanuit het rootproject 'gradle-wrapper'.

Zoals we kunnen zien, is de uitvoer hetzelfde als die we zouden krijgen als we deze taak uitvoeren met de gradle opdracht.

3. Veelvoorkomende problemen

Laten we nu eens kijken naar enkele veelvoorkomende problemen waarmee we te maken kunnen krijgen bij het werken met Wrapper.

3.1. Globale .gitignore die alle Jar-bestanden negeert

Sommige organisaties staan ​​niet toe dat ontwikkelaars jar-bestanden in hun broncontrolesysteem controleren. Dergelijke projecten hebben doorgaans een regel in de global .gitignore bestand om alle jar-bestanden te negeren. Daarom, de gradle-wrapper.jar bestand is niet ingecheckt in de git-repository. Om deze reden kunnen Wrapper-taken niet op andere machines worden uitgevoerd. In dergelijke gevallen, we moeten de gradle-wrapper.jar bestand krachtig naar git:

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

Evenzo kunnen we een projectspecifiek hebben .gitignore bestand dat jar-bestanden negeert. We kunnen het oplossen door de .gitignore regel of door het jar-bestand van de wrapper krachtig toe te voegen, zoals hierboven weergegeven.

3.2. Ontbrekende wrapper-map

Bij het inchecken van een op Wrapper gebaseerd project, kunnen we vergeten de wikkel map die bestaat in het gradle map. Maar zoals we hierboven hebben gezien, is de wikkel map bevat twee kritieke bestanden: gradle-wrapper.jar en gradle-wrapper.properties.

Zonder deze bestanden krijgen we fouten bij het uitvoeren van Gradle-taken met de Wrapper. Daarom we moeten de wikkel map in het broncontrolesysteem.

3.3. Wrapper-bestanden verwijderd

Gradle-gebaseerde projecten bevatten een .gradle map waarin de cache wordt opgeslagen om Gradle-taken te versnellen. Soms moeten we de cache leegmaken om Gradle-buildproblemen op te lossen. Meestal verwijderen we de hele .gradle map. Maar we kunnen de Wrapper verwarren gradle map met de .gradle map en verwijder deze ook. Daarna zullen we zeker problemen tegenkomen wanneer we Gradle-taken proberen uit te voeren met de Wrapper.

We kunnen dit probleem oplossen door de laatste wijzigingen uit de bron te halen. Als alternatief kunnen we de wrapper-bestanden opnieuw genereren.

4. Conclusie

In deze tutorial hebben we geleerd over Gradle Wrapper en het basisgebruik ervan. We hebben ook geleerd over enkele veelvoorkomende problemen waarmee we te maken kunnen krijgen bij het werken met Gradle Wrapper.

Zoals gewoonlijk kunnen we het project controleren met gegenereerde Gradle Wrapper-bestanden op GitHub.