Dernière modification : Dec 08 , 2024

Fonctionnement de Gradle

Comparaison avec Maven

Gradle Maven
build.gradle, gradle.properties pom.xml
Plus lent sur le premier appel, plus rapide ensuite Globalement plus lent.
Supports projets multi-langages Principalement pour les projets Java
Solution officielle pour Android Plugins plus stables et riches
Meilleure résolution des conflits de dépendances Exclusion et surcharge limitée pour résoudre les conflits
Réutilisation et écriture concise des scripts Ecriture verbeuse dans les POM ( répétition des versions etc)
Utilisation des commandes “bash” , “unix” laborieuse par rapport à un Makefile Pas d’appel possible des commandes bash, Unix.

Gradle Wrapper

Le Gradle Wrapper

Le Wrapper est un script qui permet d'invoquer une version déclarée de
Gradle, le télécharger automatiquement avant le lancement si nécessaire.

Gradle wrapper en quelques mots

  1. Vous définissez la version de Gradle dans gradle-wrapper.properties
  2. Vous installez le wrapper en utilisant gradle wrapper
  3. Vous utilisez gradlew ou gradlew.bat pour appeler Gradle dans la
    version attendue

Fonctionnement de Gradle

5 fonctionnalités importantes

  • Gradle est un outil de build générique
  • Le modèle de Gradle est basé sur des tâches
  • Le script est chargé, initialisé et exécuté dans un ordre précis
  • Gradle est extensible
  • Gradle repose sur une API

Gradle vous permet de construire de nombreux types de logiciels.

Il est possible d'utiliser des plugins pour simplifier toutefois la
production d'applications.

Ainsi Gradle supporte assez bien les applications Java, C/C++, Swift,
Scala, Groovy, Kotlin
.

Par extension, il est assez facile d'intégrer NPM.


Les concepts de Gradle

Les projets

  • Un projet représente en Gradle, un logiciel, une bibliothèque, quelque chose que vous souhaitez construire.
  • Un projet définit des tâches afin de d'exécuter différents opérations

Les artifacts

  • Un projet consiste à créer un ou plusieurs artefacts.
  • Un artefact peut être une javadoc, une archive JAR, un ZIP, une image Docker...
  • Certaines tâches construisent les artefacts du projet

Les tâches

  • Les tâches sont exécutées lors du build
  • Chaque projet contient ses tâches
  • Une tâche est un une activité à faire qui peut produire quelque chose.
  • Une tâche peut consister à compiler quelque chose, créer un JAR, appeler Javadoc etc

Le script de build

(buildscript)

  • Le script de build correspond au fichier build.gradle ou build.gradle.kt
  • Localisé à la racine du projet
  • Le script de build définit le ou les projets et les tâches disponibles pour chaque projet

Les builds Gradle reposent sur un graphe dirigé (DAG). Chaque noeud est
une unité de travail appelée tâche.

Les dépendances entre les tâches sont modélisées par les flèches entre les
noeuds du graphe


Les tâches

Les tâches

Une tâche peut contenir :

  • une action : une activité comme copier un fichier; compiler un fichier
    source...
  • des entrées : ce sont les objets produits par d'autres tâches ou des
    éléments de configuration nécessaires à l'exécution
  • des sorties : les élements produits par l'exécution de l'action
  • un état : la tâche possède plusieurs états : uninitialized, initialized;
    configured, ready, up-to-date, dirty

Un script Gradle contient :

  • un ensemble de tâches formant un graphe
  • l'organisation des builds en projets et sous-projets
  • la configuration du build et les propriétés

Les phases de Build

L'exécution d'un build Gradle repose sur trois phases :

  1. Initialisation
  2. Configuration
  3. Execution

L'API Gradle

Comment étendre les fonctions de Gradle ?

Il existe quatre possibilités pour étendre Gradle et gérer les besoins
spécifiques de votre build :

  1. Créer des nouveaux types de tâches
  2. Déclarer de nouvelles properties
  3. Créer et utiliser de nouvelles conventions
  4. Créer un modèle personnalisé exemple sourceSets
  5. Utiliser les possibilités de Kotlin ou Groovy

La construction des Scripts de build Gradle repose sur un langage de
programmation (Kotlin, Gradle).

Ces langages sont compilés en utilisant une API, l'API Gradle.

Ainsi les scripts utilisent et appellent les objets et les méthodes de
l'API Gradle pour construire les tâches et aux éléments du build.

l'API Gradle est consultable via le DSL Groovy ou la Javadoc de Gradle.


Build scan

Qu'est ce que Buildscan ?

Un build scan est un enregistrement de l'exécution d'un build. Il permet
de comprendre ce qui s'est passé et pourquoi.

C'est une fonction de Gradle Entreprise; elle peut devenir potentiellement payante.

Qu'est ce que Buildscan ?

  • Le buildscan peut être utilisé pour Maven et Gradle
  • L'information est accesible uniquement par un lien affiché dans la
    console
  • Les données sont supprimées après trois mois si non utilisées
  • les données visualisées ne sont jamais supprimées sauf si vous les
    supprimez-vous-même.

Fonctionnement de Gradle

Created by Sylvain Leroy