I. Introduction▲
La réalisation d'une application est constituée de nombreuses étapes. Parmi celles-ci, l'étape de construction, aussi appelée étape de build, est la plus importante. Elle permet de transformer un code source, issu d'une représentation humaine, dans un ensemble de code exécutable constituant une représentation machine. Il n'est pas rare que cette étape soit complexe tant par sa mise en œuvre que son adéquation aux besoins changeants du projet. Il est alors nécessaire d'outiller cette construction afin de répondre au plus près aux besoins du projet.
De nombreux outils de build existent pour répondre à cette problématique. Certains de ces outils, implantés depuis des années, dominent le marché comme Ant et Maven. Néanmoins, malgré leur omniprésence, nombreux sont les développeurs qui restent bloqués et souffrent d'un manque de fonctionnalités. Gradle, né de l'expérience des utilisateurs acquise au cours ces différentes années, tente de répondre aux besoins particuliers de build des applications d'une entreprise.
II. Un système de build de troisième génération▲
Gradle est un système de build de troisième génération proposant une approche flexible pour la construction de projets Java, Groovy et Scala et Java EE. Il utilise les meilleures fonctionnalités de chacun des outils existants comme une structure de développement cadrée, une ossature pour la construction de son projet, des conventions de noms, tout en proposant en permanence une personnalisation selon ses besoins. En termes d'architecture technique, Gradle est un toolkit fondé sur les meilleures librairies du marché de l'intégration continue, comme le gestionnaire de dépendances Ivy, l'utilisation native de taches Ant et le langage Groovy pour décrire le build d'un projet.
À l'image de ses concurrents, Gradle apporte une approche déclarative dans la définition de la chaîne de build. Mais Gradle fournit un langage de spécification du domaine (DSL) en langage Groovy pour écrire un script Gradle. Cette DSL orchestre une API Gradle, et permet de fournir à l'écriture du build une grande richesse des éléments. Chaque script Gradle configure de manière sous-jacente un objet Gradle Projet sûr lequel le script utilise un ensemble de propriétés et de méthodes exposées par l'API.
Ce véritable langage de build vous offre une flexibilité d'expression répondant aux besoins de votre entreprise, comme la possibilité de déclarer plusieurs répertoires de sources par projet, de configurer les dépendances très finement, de mettre en place plusieurs projets par répertoires de sources ou encore de générer autant d'artefacts que nécessaire pour votre projet.
III. Gradle permet de résoudre les problèmes rencontrés avec Ant ou Maven▲
Au-delà d'être un compétiteur face aux outils de build existants, Gradle fait office de fédérateur. En effet, l'outil peut s'insérer aisément dans des infrastructures utilisant Ant ou Maven, ceci afin d'enrichir les fonctionnalités existantes, et offre une panoplie de stratégies pour résoudre les problèmes rencontrés avec Ant ou Maven.
Dans le cadre d'Ant, Gradle possède un module d'import permettant de convertir toutes les cibles d'un script Ant en tâches Gradle. Celui-ci peut ensuite rajouter du comportement avant ou après l'exécution de la cible Ant. Cette fusion native entre Ant et Gradle permet également de faire référence à une tache Gradle depuis un script Ant importé. Cette mutualisation donne la possibilité ainsi d'utiliser Gradle comme outil complémentaire à votre infrastructure Ant sans un besoin de migration.
Dans le cadre de Maven, Gradle est capable de collecter des artefacts dans des dépôts Maven à travers la librairie Ivy et d'écrire dans des dépôts Maven via l'utilisation native du module Maven inclus dans la distribution Gradle. Cette fonctionnalité permet d'utiliser Gradle pour ses chaines de build, et d'utiliser des dépôts d'entreprise de type Maven en standard dans la majorité des organisations. Ces dépôts, gérés par des outils gestionnaires comme JFrog Artifactory, rendent possible une centralisation du stockage des librairies utilitaires publiques issues de dépôts Internet avec les artefacts issus des projets, le tout avec des métadonnées de type uniforme.
Gradle augmente également les aspects de fiabilité et de performance d'une chaine de compilation en fournissant un support extrêmement puissant, pour un projet multi module, à travers des fonctionnalités de build incrémentales que ses compétiteurs ne possèdent pas.
Après deux ans d'existence, Gradle atteint un niveau de maturité lui permettant d'être adopté en masse et sans risques par les grands comptes. À ce jour, les entreprises ayant utilisé Gradle ont constaté une plus-value immédiate, et l'ont implanté comme leur principal outil de build.
IV. Liens▲
V. Remerciements▲
Cet article a été publié avec l'aimable autorisation de Grégory Boissinot. L'article original (Gradle, un nouvel outil de build incontournable) peut être vu sur le blog/site de Zenika.