Veiledning til Gradle Wrapper

1. Oversikt

Gradle brukes ofte av utviklere til å administrere prosjektets byggesyklus. Det er standardvalget for verktøy for alle nye Android-prosjekter.

I denne opplæringen lærer vi om Gradle Wrapper, et tilhørende verktøy som gjør det lettere å distribuere prosjekter.

2. Gradle Wrapper

For å bygge et Gradle-basert prosjekt, må vi ha Gradle installert i maskinen vår. Imidlertid, hvis vår installerte versjon ikke samsvarer med prosjektets versjon, vil vi sannsynligvis møte mange inkompatibilitetsproblemer.

Gradle Wrapper, også kalt Innpakning kort sagt, løser dette problemet. Det er et skript som kjører Gradle-oppgaver med en deklarert versjon. Hvis den deklarerte versjonen ikke er installert, installerer Wrapper den nødvendige.

De viktigste fordelene med Wrapper er at vi kan:

  • Bygg et prosjekt med Wrapper på hvilken som helst maskin uten å måtte installere Gradle først
  • Ha en fast Gradle-versjon. Dette gir gjenbrukbare og mer robuste bygg på CI-rørledninger
  • Oppgrader til en ny Gradle-versjon enkelt ved å endre Wrapper-definisjonen

I de neste avsnittene kjører vi Gradle-oppgaver som krever at Gradle installeres lokalt.

2.1. Genererer innpakningsfiler

For å bruke Wrapper, må vi generere noen spesifikke filer. Vi genererer disse filene ved hjelp av den innebygde Gradle-oppgaven som heter innpakning. Merk at vi trenger å generere disse filene bare én gang.

La oss nå kjøre innpakning oppgave i prosjektkatalogen vår:

$ gradle-innpakning 

La oss se utdataene fra denne kommandoen:

La oss ta en titt på hva disse filene er:

  • gradle-wrapper.jar inneholder kode for nedlasting av Gradle-distribusjonen spesifisert i gradle-wrapper.egenskaper fil
  • gradle-wrapper.egenskaper inneholder Wrapper runtime egenskaper - viktigst av alt, versjonen av Gradle-distribusjonen som er kompatibel med det aktuelle prosjektet
  • gradlew er skriptet som utfører Gradle-oppgaver med Wrapper
  • gradlew.bat er den gradlew tilsvarende batch-skript for Windows-maskiner

Som standard er innpakning oppgave genererer Wrapper-filer med Gradle-versjonen som for øyeblikket er installert på maskinen. Vi kan spesifisere en annen versjon om nødvendig:

$ gradle wrapper - gradle-versjon 6.3 

Vi anbefalte å sjekke innpakningsfilene påkildekontrollsystemet som GitHub. På denne måten sikrer vi at andre utviklere kan kjøre prosjektet uten å måtte installere Gradle.

2.2. Kjører Gradle-kommandoer med Wrapper

Vi kan kjøre hvilken som helst Gradle-oppgave med Wrapper ved å erstatte den gradering med gradlew.

For å liste opp tilgjengelige oppgaver kan vi bruke gradlew oppgaver kommando:

$ gradlew oppgaver

La oss ta en titt på utgangen:

Hjelpeoppgaver ---------- buildEnvironment - Viser alle buildscript-avhengigheter erklært i rotprosjektet 'gradle-wrapper'. komponenter - Viser komponentene produsert av rotprosjektet 'gradle-wrapper'. [inkubering] avhengigheter - Viser alle avhengigheter deklarert i rotprosjektet 'gradle-wrapper'. dependencyInsight - Viser innsikten i en bestemt avhengighet i rotprosjektet 'gradle-wrapper'. dependComponents - Viser de avhengige komponentene i komponentene i rotprosjektet 'gradle-wrapper'. [inkubating] help - Viser en hjelpemelding. modell - Viser konfigurasjonsmodellen for rotprosjektet 'gradle-wrapper'. [inkubering] utgående varianter - Viser de utgående variantene av rotprosjektet 'gradle-wrapper'. prosjekter - Viser delprosjektene til rotprosjektet 'gradle-wrapper'. egenskaper - Viser egenskapene til rotprosjektet 'gradle-wrapper'. oppgaver - Viser oppgavene som kan kjøres fra rotprosjektet 'gradle-wrapper'.

Som vi kan se, er utgangen den samme som vi ville fått når vi kjørte denne oppgaven med gradering kommando.

3. Vanlige problemer

La oss nå se på noen vanlige problemer som vi kan møte når vi jobber med Wrapper.

3.1. Global .gitignore som ignorerer alle Jar-filer

Noen organisasjoner tillater ikke utviklere å sjekke jar-filer i kildekontrollsystemet. Vanligvis har slike prosjekter en regel i det globale .gitignore fil for å ignorere alle jar-filer. derfor gradle-wrapper.jar filen er ikke sjekket inn i git-depotet. Av denne grunn kan ikke Wrapper-oppgaver kjøres på andre maskiner. I slike tilfeller, vi trenger å legge til gradle-wrapper.jar fil for å git kraftig:

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

På samme måte kan vi ha et prosjektspesifikt .gitignore fil som ignorerer jar-filer. Vi kan fikse det enten ved å slappe av .gitignore regelen eller ved å legge til wrapper jar-filen kraftig, som vist ovenfor.

3.2. Manglende innpakningsmappe

Når du sjekker inn et Wrapper-basert prosjekt, kan vi glemme å inkludere innpakning mappen som finnes inne i gradering mappe. Men som vi har sett ovenfor, er innpakning mappen inneholder to viktige filer: gradle-wrapper.jar og gradle-wrapper.egenskaper.

Uten disse filene får vi feil når du kjører Gradle-oppgaver med Wrapper. Derfor, vi må sjekke innpakning mappen inn i kildekontrollsystemet.

3.3. Fjernet innpakningsfiler

Gradebaserte prosjekter inneholder en .gradle mappe som lagrer hurtigbuffer for å øke hastigheten på Gradle-oppgaver. Noen ganger må vi tømme hurtigbufferen for å feilsøke problemer med Gradle-bygging. Vanligvis fjerner vi hele .gradle mappe. Men vi kan feile innpakningen gradering mappe med .gradle mappen og fjern den også. Etter det vil vi definitivt møte problemer når vi prøver å kjøre Gradle-oppgaver med Wrapper.

Vi kan løse dette problemet ved å hente de siste endringene fra kilden. Alternativt kan vi regenerere Wrapper-filene.

4. Konklusjon

I denne opplæringen lærte vi om Gradle Wrapper og dens grunnleggende bruk. Vi lærte også om noen vanlige problemer vi kan møte når vi jobber med Gradle Wrapper.

Som vanlig kan vi sjekke prosjektet med genererte Gradle Wrapper-filer på GitHub.