Cribble Crabble Gradle: Auto-Build Magic

Les développeurs facilitent la vie des gens, tandis que Gradle le facilite pour les développeurs. Si vous écrivez sur Android, cet article est fait pour vous. Découvrez quel genre de bête ce Gradle (spoiler: c'est un éléphant), ainsi que comment travailler avec lui.


Gradle est un système de construction automatique qui est utilisé pour simplifier le travail avec Java. En utilisant des outils standardisés (conditionnellement), il aide les développeurs à créer le bon produit sans perdre son caractère unique. Après tout, le processus de travail avec Gradle n'est pas seulement un choix de modèle. Mais tout d'abord.


image


Où télécharger Gradle


Vous pouvez télécharger Gradle sur le site officiel . Nous vous recommandons de télécharger et d'installer tout manuellement (pour que la vie ne semble pas framboise). Pour obtenir des instructions et tous les liens nécessaires, voir Installation de Gradle> Installation manuelle . Au fait, nous vous recommandons de tout lire. C'est tout. Sérieusement.


Sur cette page, vous devez sélectionner la version du système et cliquer sur "binaire uniquement". Ensuite - décompressez l'archive zip et définissez la variable d'environnement PATH comme décrit dans les instructions. Si tout est fait correctement, après l'installation, la commande gradle -v devrait afficher la version du système sélectionné.


Parfois, il s'avère que lors de la définition, le système trouve Gradle dans un endroit inattendu. Sous Windows, cela est résolu comme suit:
pour% i in (gradle.bat) font Ă©cho . % ~ $ CHEMIN: i


Comment travailler avec Gradle


Gradle n'est pas spécifique à la plateforme. De plus, le système utilise différents langages de programmation. Les plus populaires sont Groovy DSL et Kotlin (mais vous pouvez écrire sur d'autres). La première option sera utilisée dans l'article, car il s'agit du langage de description de tâche standard dans Gradle.


Avant de commencer, faites à nouveau attention aux termes: "tâche" et "plug-in". Après tout, tout le travail avec le système repose sur eux. Les plugins fournissent et créent des tâches. Les tâches sont les actions qui doivent être effectuées. Tout est très simple.


Vous pouvez en savoir plus à ce sujet dans les instructions pour les plug-ins: JavaCompile (ajouter de nouvelles tâches), SourceSet (ajouter de nouveaux objets de domaine). Les plugins fonctionnent également avec les conventions et étendent les objets. Par exemple, en utilisant le plugin, vous pouvez ajouter de nouveaux éléments DSL et / ou les configurer.


L'ensemble "Core Plugins" est automatiquement créé lorsque vous installez Gradle. Lors des premières étapes, il est recommandé d'utiliser la catégorie "Utility", à savoir le plugin "Build Init Plugin". Il fournit des tâches pour initialiser un projet dans le système. Vous pouvez sélectionner le type de projet dans la liste du site.


Que ce soit java-application .
Tâche: gradle init --type java-application


Après cela, de nouveaux fichiers apparaîtront dans le dossier. Parmi eux:


  • le dossier gradle (attention, pas .gradle) et le fichier gradlew.bat sont des wrappers, wrappers;
  • fichier build.gradle - un script oĂą les bibliothèques, les frameworks, les plugins et les tâches d'un projet spĂ©cifique sont indiquĂ©s.

Le dernier fichier affichera la section plugin. Ce plugin a déjà des tâches qui lui sont attachées. Leur liste peut être consultée à l'aide de la commande Gradle Tâches.


Les tâches


Montré en blocs par leurs fonctions. Chacun est donné une brève description. La compréhension nécessite une connaissance de l'anglais au niveau de base. Si vous n'êtes pas dans ce groupe, n'importe quel traducteur fera l'affaire. Il n'y a pas de constructions de langage complexes dans build.gradle.


Après avoir sélectionné une tâche et sa réussite, vous verrez une inscription verte "BUILD SUCCESSFUL" en bas. Cela signifie que (vous avez de la chance) tout s'est bien passé. Également au bas du système donnera un bref rapport.


Si le statut est "exécuté" - la tâche est vraiment terminée. Si "à jour" - non. Cela ne signifie pas qu'une sorte d'échec s'est produit. Dans le cas d'un tel statut, la tâche ne nécessite pas de solution de principe, c'est-à-dire que son objet est déjà à jour.


Cela s'est produit parce que Gradle a généré automatiquement des « contrôles à jour » - une construction incrémentielle dont le but est d'optimiser le système. Par conséquent, les tâches qui sont déjà terminées ou ne nécessitent aucune action ne sont pas élaborées.


Vous pouvez désactiver cette version. Manuellement. Pour ce faire, vous devez terminer la tâche avec l'indicateur --rerun-tasks. Si tout est fait correctement, le statut de toutes les tâches passera à "exécuté".


Gradle vous permet également d'afficher les journaux à différents niveaux. Par exemple, la commande gradle run -i vous permettra de lire des messages d'information sur le fonctionnement du système, la commande run -q activera le mode silence, run -d affichera tous les messages de journal, etc. Une liste complète des journaux et des informations supplémentaires sur le système de journalisation peuvent être trouvées ici .


DĂ©pendances


Gestion des dépendances - Spécifie les bibliothèques ou les infrastructures dont le projet a besoin. Gradle doit inclure ces dépendances à un moment donné afin de construire l'application correctement (ou en général) à la fin. La commande gradle init pour java-application dans le script de construction appelle automatiquement des informations sur 2 configurations.


L'implémentation est responsable de la transitivité: ses dépendances seront invisibles pour les utilisateurs. TestImplementation étend la configuration précédente. Ainsi, ils travaillent conjointement.


Pour mieux comprendre les dépendances et comment les utiliser, lisez le chapitre " Gestion des configurations de dépendances " du manuel officiel. Soit dit en passant, la « séparation API et implémentation » explique en détail l'API et l'implémentation, ainsi que la différence entre les deux.


Si vous devez inclure la dépendance dans l'artefact final, vous devez spécifier toutes les informations nécessaires au manifeste du fichier jar dans les paramètres de la tâche jar. Comment le faire correctement, vous pouvez voir, par exemple, ici .


Ensuite, vous devez inclure les dépendances dans le bocal. Ceci est nécessaire pour la compilation.
Trop compliqué? Utilisez le " Gradle Shadow Plugin ".


La commande gradle --console plain dependencies affiche une liste de toutes les configurations et leurs dépendances dans une liste. Le système offre également aux développeurs un filtre qui exclut les dépendances de la liste (gradle - dépendances simples de la console | trouver "-") - certaines sont plus pratiques.


Les types de dépendances les plus courants:


  • externe - chargĂ© Ă  partir de rĂ©fĂ©rentiels externes;
  • conception - dĂ©pend du module dans un projet spĂ©cifique;
  • fichier - sont connectĂ©s en tant qu'archives jar ou aar.

Lequel de ces éléments à utiliser, le développeur décide.
Pour Java, tout est bien défini dans la gestion des dépendances .


Astuces de vie


Malgré le fait que Gradle est un système populaire et pertinent d'assemblage automatique, de nombreuses personnes ont des problèmes avec lui. Voici quelques suggestions qui peuvent faciliter la vie d'un développeur Android:


  1. Utilisez la console. La recherche de commandes est parfois problématique et lorsque vous modifiez build.gradle, le système peut se bloquer ou, en général, recharger le projet. Par conséquent, les experts recommandent d'appeler Gradle directement à partir de la console.

    Vrapper accompagne généralement le projet. Linux et macOS sont accessibles directement. Sous Windows, appelez un fichier bat au lieu d'un wrapper.


  2. Gradle stocke le cache pendant 1 jour. Cela peut être reconfiguré. Vous devez modifier le code:


    // build.gradle configurations.all { resolutionStrategy.cacheChangingModulesFor -  , 'hours' resolutionStrategy.cacheDynamicVersionsFor -  , 'minutes' } 

  3. - –refresh-dependencies - une commande utile qui commencera à mettre à jour toutes les dépendances dans Gradle. Cela peut être utile si certaines données du cache sont corrompues, comme il le vérifie. Il est pratique à utiliser si les données du cache sont endommagées, car elles sont vérifiées et mises à jour (si différentes).


  4. Utilisez CI (intégration continue) lorsque vous travaillez avec un système de génération automatique. Laissez les tests unitaires s'exécuter pour toutes les validations. De plus, les experts recommandent de connecter les tests unitaires. Cela peut être fait dans Android Studio.

    Cette combinaison détectera les erreurs plus tôt. Et même si cela ralentira le processus de démarrage, le développeur pourra se détendre à l'avenir. Alors hack de vie pour l'avenir.


  5. Essayez encore. Effrayant (Nous aussi) En fait, la synchronisation n'a pas toujours besoin d'être redémarrée immédiatement. Tout d'abord, les experts recommandent de vérifier le système dans son ensemble. Par exemple, en utilisant n'importe quelle commande simple - cela vous aidera à comprendre quelles sont les chances de réussite de la prochaine synchronisation.


  6. Configurez votre environnement de développement IntelliJ IDEA avec Gradle. Cela permettra d'optimiser le processus de travail, ainsi que d'utiliser la liste magique.


  7. Astuce pour ceux qui travaillent avec Gradle à partir de la ligne de commande d'Android Studio. Vérifiez l'erreur "Démarrage d'un démon Gradle, 1 incompatible n'a pas pu être réutilisé" (# 68374709). Il s'agit d'un fléau d'un système que les développeurs n'ont pas encore corrigé.



L'un des principaux problèmes de Gradle est "La construction de Gradle a échoué". Nous pouvons nous passer de mots inutiles si vous le savez déjà. Sinon, bonne chance.


image


Cependant, le principal problème de Gradle est différent. Le temps nécessaire à la construction du système est depuis longtemps une légende (très triste) dans les milieux spécialisés. Il est impossible d'accélérer le travail, du moins pas de manière significative.


Il faut donc attendre quand mĂŞme.


Vous pouvez, par exemple, voler quelque part dans l'espace, comme dans Interstellar.


image


Conclusion


Gradle est une bonne solution, malgré tous les inconvénients. L'assemblage automatique vous fera gagner du temps et de l'énergie (quelle que soit l'ironie du son après le paragraphe précédent). Et aussi - pour rendre votre application plus propre. Le système remarquera toute erreur et ne vous permettra pas de terminer le travail jusqu'à ce qu'il soit réparé (à tout prix).


Source: https://habr.com/ru/post/fr473642/


All Articles