web-dev-qa-db-fra.com

Qu'est-ce qu'un fichier Gradle wrapper et Gradlew.bat?

Dernièrement, j'ai appris à connaître le pouvoir de Gradle en tant que système de construction et en tant que développeur Android, je veux le comprendre profondément.

Un article disait ce qui suit: -

"Vous pouvez exécuter toutes les tâches de construction disponibles pour votre projet Android à l'aide de l'outil de ligne de commande de l'encapsuleur Gradle. Il est disponible sous forme de fichier de commandes pour Windows (gradlew.bat) et d'un script Shell pour Linux et Mac (gradlew.sh), et il est accessible depuis la racine de chaque projet créé avec Android Studio. "

Pour exécuter une tâche avec le wrapper, utilisez l'une des commandes suivantes:

Sous Windows: gradlew nom-tâche

Maintenant, j'ai des doutes qui vont comme suit: -

  1. Qu'est-ce que Gradle Wrapper et gradlew.bat?
  2. Si Android Studio est installé et qu'il utilise gradle pour créer mes applications (il est donc déjà installé sur mon système), dois-je quand même installer gradle à des fins de construction à partir de la ligne de commande comme lorsque j'écris comme gradle, gradlew sur ma ligne de commande, j'obtiens une erreur en disant gradlew n'est pas reconnu comme une commande interne ou externe (la même erreur pour d'autres commandes). Je l’utilise peut-être sur le mauvais chemin, aidez-moi sur le chemin nécessaire pour utiliser la commande associée à Gradle.
  3. Si je dois le télécharger et l'installer, comment et où puis-je trouver le fichier? et les autres processus? 

J'utilise une machine Windows pour cela.

13
Abhishek Kumar

Gradle Wrapper est une partie optionnelle du système de construction Gradle. Il se compose de quatre fichiers que vous archivez dans le système de contrôle de version. Le script de démarrage * nix <your root project>/gradlew, le script de démarrage Windows <your root project>/gradlew.bat, <your root project>/gradle/wrapper/gradle-wrapper.jar qui contient les fichiers de classe du wrapper et est lancé par les scripts de démarrage et <your root project>/gradle/wrapper/gradle-wrapper.properties qui contient une configuration pour le wrapper, par exemple la version de Gradle à utiliser pour construire le projet .

À mon avis, chaque projet Gradle, même le plus petit, devrait utiliser l’emballage Gradle.

Le wrapper Gradle s'assure que votre construction est toujours exécutée avec la même version de Gradle, peu importe qui l'exécute et où que Gradle soit installé ou non, à condition que celui-ci utilise le wrapper Gradle pour construire le projet. Cela signifie que vous pouvez concevoir votre version pour cette version de Gradle et vous assurer que la construction n'échouera pas, simplement parce que quelqu'un utilise une version différente de Gradle et constitue donc une étape importante de la reproductibilité de la construction.

En outre, pour créer votre projet, il suffit d’installer Java et c’est tout. Aucune version de Gradle n'est requise sur lui. En réalité, toute version de Gradle déjà installée est ignorée. Le wrapper Gradle vérifie si, dans ~/.gradle/, la version nécessaire à la construction est déjà présente, car un wrapper Gradle de tout projet l'a déjà indiquée. S'il est déjà présent, il est utilisé, sinon il est automatiquement téléchargé.

Si vous tapez gradlew sur la ligne de commande et que la commande est introuvable, cela signifie que vous n'avez pas placé le chemin de vos projets racine dans la variable d'environnement PATH (je ne le recommanderais pas non plus), et que vous n'êtes pas actuellement dans votre répertoire de projets racine . Pour exécuter une construction Gradle, vous devez être situé n’importe où dans votre projet et appeler Gradle ou l’encapsuleur Gradle. Mais comme pour tout fichier exécutable qui ne se trouve pas sur le chemin, vous devez bien sûr indiquer son chemin. Donc, si vous êtes dans le répertoire de votre projet racine, vous pouvez simplement faire gradlew. si vous êtes dans <root project dir>/foo/bar/, vous devrez appeler ../../gradlew.

Les fichiers Gradle Wrapper sont générés par la tâche Gradle implicitement disponible wrapper et sont ensuite archivés dans le VCS du projet en question. Si ces quatre fichiers ne sont pas présents pour un projet, il n'utilise pas l'encapsuleur Gradle et vous devez envoyer une demande d'amélioration au projet pour l'ajouter.

Si un projet n'utilise pas l'encapsuleur Gradle, mais le construit avec Gradle, vous pouvez installer Gradle et utiliser gradle au lieu de gradlew ou même appeler l'encapsuleur Gradle de tout autre projet disponible sur le disque. La construction sera ensuite exécutée avec la version de Gradle utilisée par l’emballage ou par l’installation de Gradle et, par conséquent, pourrait ne pas se comporter comme prévu. C’est pourquoi chaque projet doit utiliser l’emballage si il utilise Gradle.

21
Vampire
  1. gradlew.bat IS l'encapsuleur Gradle (pour Windows dans ce cas). Gradle Wrapper est juste un petit utilitaire qui garantit que Gradle est installé (ou l'installera si nécessaire) afin que vous puissiez toujours construire le projet. Gradle lui-même vous permet de gérer les dépendances et de créer des configurations pour votre projet.

  2. Si vous avez installé Android Studio, vous avez Gradle installé et vous êtes prêt à partir. (Techniquement, chaque projet aura son propre wrapper pour gérer l’installation/l’utilisation de Gradle)

  3. Comme je l'ai mentionné ci-dessus, vous êtes prêt à partir.

En fin de compte, Gradle est un outil de ligne de commande que vous utilisez pour construire votre projet et que vous pouvez très bien utiliser directement (bien que vous n’ayez pas à le faire) car c’est exactement ce qu’Android Studio utilise pour construire votre projet.

1
RobertoCuba

Edité après les commentaires

Gradle est un système de construction.

Ce graduel-wrapper est en quelque sorte l'interface principale pour la construction de projets Android. C'est la partie de Gradle-build-system et fait quelques vérifications primaires si gradle est installé ou non.

gradlew.bat - c'est un fichier de commandes utilisé sous Windows. Vous pouvez même l'ouvrir avec un bloc-notes pour afficher les instructions qu'il contient. Les fichiers batch sont comme des 'commandes' écrites dans un fichier à exécuter. Vous l'utilisez (dans le cas de Windows) pour exécuter des commandes de construction. Il vérifie également si gradle est installé ou non. Et dans le cas contraire, il le télécharge et l'installe.

Exemple: pour créer une application Android sous Windows:

  • Ouvrir l'invite de commande
  • Accédez au répertoire racine de votre projet.
  • exécuter gradlew.bat assembleDebug

Il démarre le wrapper, vérifie si Gradle y est installé et exécute toutes les commandes "spécifiques au niveau" pour construire votre projet.

Avez-vous besoin d'installer Gradle?

En fait non. C'est le travail de ce script gradlew de vérifier cela. Si gradle n’y figure pas déjà, il le téléchargerait automatiquement et l’utiliserait pour toutes les versions ultérieures.

0
ZeekHuge