L’équipe de développement de Gradle annonce la version 7.0 de l’outil d'automatisation de construction pour le développement de logiciels multilingues. La grande nouveauté et surtout celle la plus attendue dans la version 7.0 de Gradle est la surveillance du système de fichiers par défaut. Gradle 7.0 permet également de rendre les constructions incrémentielles plus rapides, étend la prise en charge de la construction de projets avec Java 16 et ajoute la prise en charge de la construction sur les Mac utilisant les processeurs M1 d’Apple.Cette version introduit également un aperçu des fonctionnalités pour les versions de dépendances centralisées, active les erreurs de validation de construction pour rendre les constructions plus fiables et facilite la création des plugins de convention pour les fichiers de paramètres. De nombreuses fonctionnalités en cours d'incubation ont été promues à la version stable.
Rappelons que Gradle est un outil d'automatisation de la construction pour le développement de logiciels multilingues. Il contrôle le processus de développement lors des tâches de compilation et de packaging jusqu'aux tests, au déploiement et à la publication. Les langages pris en charge sont Java (Kotlin, Groovy, Scala), C/C++, JavaScript.
Gradle s'appuie sur les concepts d’Apache Ant et Apache Maven et introduit un langage spécifique au domaine basé sur Groovy et Kotlin, en contraste avec la configuration de projet basée sur XML utilisée par Maven. Gradle utilise un graphe acyclique dirigé pour déterminer l'ordre dans lequel les tâches peuvent être exécutées, en fournissant une gestion des dépendances.
Gradle a été conçu pour les constructions multiprojets, qui peuvent devenir volumineuses. Il fonctionne sur la base d'une série de tâches de construction qui peuvent être exécutées en série ou en parallèle. Les constructions incrémentielles sont prises en charge en déterminant les parties de l'arbre de construction qui sont déjà à jour ; toute tâche dépendant uniquement de ces parties n'a pas besoin d'être réexécutée.
Le modèle de construction incrémentielle est une méthode de développement logiciel où le produit est conçu, implémenté et testé de manière incrémentielle (un peu plus est ajouté à chaque fois) jusqu'à ce que le produit soit terminé. Le produit est défini comme fini lorsqu'il satisfait à toutes ses exigences (conception, implémentation, test). Ce modèle combine les éléments du modèle de cascade avec la philosophie itérative du prototypage.
Il prend également en charge la mise en cache des composants de construction sur un réseau partagé à l'aide du cache de construction Gradle. Il produit une visualisation de la construction basée sur le Web appelée Gradle Build Scans. Le logiciel est extensible pour de nouvelles fonctionnalités et de nouveaux langages de programmation grâce à un sous-système de plugins. Voici, ci-dessous, quelques nouveautés apportées par la version 7.0 de Gradle.
Amélioration des performances
Cette version contient des améliorations supplémentaires pour le développement incrémental. La partie du processus de développement logiciel où sont apportées de fréquentes petites modifications.
Constructions incrémentales plus rapides
Lors d'une construction incrémentielle, les fichiers d'entrée et de sortie sont vérifiés pour déterminer ce qui doit être reconstruit. Cette fonctionnalité permet généralement de gagner beaucoup de temps ; cependant, elle ajoute une certaine surcharge d'E/S, qui peut être perceptible dans les grands projets lorsque peu de choses ont changé depuis la construction précédente.
La surveillance du système de fichiers a été introduite comme une fonctionnalité optionnelle dans Gradle 6.5 et marquée comme prête pour la production dans Gradle 6.7. Lorsqu'elle est activée, Gradle conserve en mémoire ce qu'il a appris sur le système de fichiers entre les constructions et évite de lire le système de fichiers à chaque construction. Cela réduit considérablement la quantité d'E/S disque nécessaire pour déterminer ce qui a changé depuis la construction précédente. Cette optimisation est maintenant activée par défaut sur toutes les plateformes prises en charge, y compris les versions récentes de Windows, Linux et MacOS.
Modifications incrémentales dans les projets Android
Cette version contient des améliorations de performances pour les changements incrémentaux dans les projets Android, en particulier ceux qui utilisent Jettifier. Par exemple, assembleDebug pour un changement non-ABI sur le projet Android Santa Tracker connait une amélioration de 12 % par rapport à Gradle 6.8.
Santa Tracker : assembleDebug avec changement non-ABI
Ignorer les projets buildSrc vides
Dans les versions antérieures de Gradle, la simple présence d'un répertoire buildSrc suffisait à déclencher l'exécution par Gradle de toutes les tâches buildSrc et à ajouter le buildSrc.jar résultant au chemin des classes buildscript, ce qui entraînait une surcharge inutile des performances ou des pertes de cache.
Avec Gradle 7.0, l’outil ignore maintenant les répertoires buildSrc vides et ne génère un buildSrc.jar que si des fichiers build et/ou des fichiers source sont détectés. Cela présente deux avantages lorsqu'un répertoire buildSrc vide est détecté :
- les tâches :buildSrc: ne seront pas exécutées inutilement ;
- le buildSrc.jar vide ne sera pas ajouté au chemin de la classe buildscript, évitant ainsi les pertes de cache que cela peut provoquer.
Nouvelles fonctionnalités et améliorations de l'ergonomie
Support natif pour Apple Silicon
Les versions précédentes de Gradle pouvaient fonctionner sur les nouveaux Mac équipés de processeurs Apple Silicon avec quelques inconvénients :
[LIST][*]avec un JDK ARM natif, les fonctionnalités de Gradle comme rich console et la surveillance du système de fichiers étaient désactivées ;[*]avec un JDK Intel,...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.