Guide du Gradle Wrapper

1. Vue d'ensemble

Gradle est couramment utilisé par les développeurs pour gérer le cycle de vie de construction de leur projet. C'est le choix par défaut de l'outil de création pour tous les nouveaux projets Android.

Dans ce didacticiel, nous découvrirons Gradle Wrapper, un utilitaire d'accompagnement qui facilite la distribution de projets.

2. Gradle Wrapper

Pour créer un projet basé sur Gradle, nous devons avoir Gradle installé sur notre machine. Cependant, si notre version installée ne correspond pas à la version du projet, nous serons probablement confrontés à de nombreux problèmes d'incompatibilité.

Gradle Wrapper, également appelé Wrapper en bref, résout ce problème. C'est un script qui exécute des tâches Gradle avec une version déclarée . Si la version déclarée n'est pas installée, Wrapper installe la version requise.

Les principaux avantages de Wrapper sont que nous pouvons:

  • Créez un projet avec Wrapper sur n'importe quelle machine sans avoir besoin d'installer d'abord Gradle
  • Avoir une version Gradle fixe. Cela donne des constructions réutilisables et plus robustes sur les pipelines CI
  • Passez facilement à une nouvelle version de Gradle en modifiant la définition de Wrapper

Dans les sections suivantes, nous exécuterons des tâches Gradle qui nécessitent que Gradle soit installé localement.

2.1. Génération de fichiers wrapper

Pour utiliser Wrapper, nous devons générer des fichiers particuliers. Nous allons générer ces fichiers à l'aide de la tâche Gradle intégrée appelée wrapper. Notez que nous devons générer ces fichiers une seule fois.

Maintenant, exécutons la tâche wrapper dans notre répertoire de projet:

$ gradle wrapper 

Voyons la sortie de cette commande:

Jetons un coup d'œil à ce que sont ces fichiers:

  • gradle-wrapper.jar contient du code pour télécharger la distribution Gradle spécifiée dans le fichier gradle-wrapper.properties
  • gradle-wrapper.properties contient les propriétés d'exécution de Wrapper - plus important encore, la version de la distribution Gradle qui est compatible avec le projet actuel
  • gradlew est le script qui exécute les tâches Gradle avec le Wrapper
  • gradlew.bat est le script batch équivalent à gradlew pour les machines Windows

Par défaut, la tâche wrapper génère des fichiers wrapper avec la version Gradle actuellement installée sur la machine. Nous pouvons spécifier une autre version si nécessaire:

$ gradle wrapper --gradle-version 6.3 

Nous vous recommandons de vérifier les fichiers Wrapper dans le système de contrôle de source comme GitHub. De cette façon, nous nous assurons que les autres développeurs peuvent exécuter le projet sans avoir besoin d'installer Gradle.

2.2. Exécution des commandes Gradle avec Wrapper

Nous pouvons exécuter n'importe quelle tâche Gradle avec le Wrapper en remplaçant gradle par gradlew .

Pour lister les tâches disponibles, nous pouvons utiliser la commande gradlew tasks :

$ gradlew tasks

Jetons un coup d'œil à la sortie:

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'.

Comme nous pouvons le voir, la sortie est la même que celle obtenue lors de l'exécution de cette tâche avec la commande gradle .

3. Problèmes courants

Voyons maintenant quelques problèmes courants auxquels nous pouvons être confrontés lorsque nous travaillons avec Wrapper.

3.1. Global .gitignore qui ignore tous les fichiers Jar

Certaines organisations n'autorisent pas les développeurs à archiver les fichiers JAR dans leur système de contrôle de source. En règle générale, ces projets ont une règle dans le fichier global .gitignore pour ignorer tous les fichiers jar. Par conséquent, le fichier gradle-wrapper.jar n'est pas archivé dans le référentiel git. Pour cette raison, les tâches Wrapper ne s'exécutent pas sur d'autres machines. Dans de tels cas, nous devons ajouter le fichier gradle-wrapper.jar à git avec force :

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

De même, nous pouvons avoir un fichier .gitignore spécifique au projet qui ignore les fichiers jar. Nous pouvons résoudre ce problème en assouplissant la règle .gitignore ou en ajoutant le fichier jar wrapper avec force, comme indiqué ci-dessus.

3.2. Dossier Wrapper manquant

Lors de l'archivage d'un projet basé sur Wrapper, nous pouvons oublier d'inclure le dossier wrapper qui existe dans le dossier Gradle . Mais comme nous l'avons vu ci-dessus, le dossier wrapper contient deux fichiers critiques: gradle-wrapper.jar et gradle-wrapper.properties.

Sans ces fichiers, nous obtiendrons des erreurs lors de l'exécution de tâches Gradle avec le wrapper. Par conséquent, nous devons archiver le dossier wrapper dans le système de contrôle de source .

3.3. Fichiers wrapper supprimés

Les projets basés sur Gradle contiennent un dossier .gradle qui stocke le cache pour accélérer les tâches Gradle. Parfois, nous devons vider le cache afin de résoudre les problèmes de build Gradle. Habituellement, nous supprimons tout le dossier .gradle . Mais nous pouvons confondre le dossier Wrapper gradle avec le dossier .gradle et le supprimer également. Après cela, nous serons certainement confrontés à des problèmes en essayant d'exécuter des tâches Gradle avec le Wrapper.

Nous pouvons résoudre ce problème en extrayant les dernières modifications de la source . Alternativement, nous pouvons régénérer les fichiers Wrapper.

4. Conclusion

Dans ce didacticiel, nous avons découvert Gradle Wrapper et son utilisation de base. Nous avons également découvert certains problèmes courants auxquels nous pouvons être confrontés lorsque nous travaillons avec Gradle Wrapper.

Comme d'habitude, nous pouvons vérifier le projet avec les fichiers Gradle Wrapper générés sur GitHub.