🐘 Gradle - Introduction - DIM 2022

Gradle est un système d'automatisation de build open-source qui s'appuie sur les concepts d'Apache Ant et d'Apache Maven. Il introduit un langage spécifique au domaine (DSL) basé sur Groovy au lieu du XML utilisé par Apache Maven pour déclarer la configuration du projet.
Gradle a été conçu pour les constructions multi-projets, qui peuvent devenir très volumineuses. Gradle est utilisé pour gérer tout l'écosystème d'une app Android, d'où l'utilité de bien le comprendre.
Il supporte les builds incrémentiels en déterminant intelligemment quelles parties de l'arborescence de compilation sont à jour.
Gradle peut :
- Construire des classes par réflexion de code
- Exécuter des scripts / du code
- Ecrire dans des fichiers
- Déployer des builds
- Faire le CI
- Gérer les dépendances
- Exécuter les tests
- Faire le café quand un build a réussi
- Build ton programme automatiquement quand l'ISS passe au dessus de ta tête.

Les possibilités sont infinies
Note 📝: Vous pouvez voir Gradle comme un genre deNPM
ouComposer
, mais en beaucoup beaucoup plus complet et complexe. Le principe de base reste d'ajouter des dépendances à votre programme, de gérer tout cela et de compiler l'ensemble de la manière la plus efficace possible.
🤓 Gradle intervient seulement à la compilation et pas au run, il n'est donc pas possible que Gradle agisse sur le programme une fois que celui ci est lancé
Gradle est une alternative à Maven, plus moderne et sympa à utiliser (et pourtant vous allez détestez Gradle, alors imaginez les développeur qui bossent avec Maven...)
Kotlin + Gradle
Pour faire suite au support précédent on va commencer à se faciliter la vie et utiliser Gradle pour gérer la compilation et le run de notre programme.
Getting started
- On va suivre gentiment les instructions d'installation de Gradle (Installez bien le JDK 8+ si c'est pas le cas. JDK != JRE)
- Une fois faites, créez un dossier de travail :
/myKotlinApp
par exemple - Nous allons initialiser gradle :
$ cd myKotlinApp
$ gradle init
- Choisissez
kotlin-application
puisgroovy
, laissez le reste par défaut. - Ouvrez le dossier avec votre éditeur de code préféré (Sublime text, VS Code, ou n'importe quel éditeur de texte), n'utilisez pas
intellijea
ou un IDE pour le moment.
Note 📝: Groovy est un langage supporté par Gradle pour sa configuration. C'est confusant, mais Kotlin est aussi un langage supporté par Gradle. Sur la documentation de Gradle vous remarquerez qu'il est possible d'avoir les exemples dans les 2 langages.
Vous devriez obtenir une structure de dossier comme suit :
.
├── app
│ ├── build.gradle //la configuration de votre Gradle
│ └── src //Votre code va être ici
├── gradle
│ └── wrapper //Executable wrapper
├── gradlew //Gradle Wrapper
├── gradlew.bat //Pour windows
└── settings.gradle
Votre première "Task" ✅
Gradle est un système d'automatisation. Vous définissez une tâche, puis vous la lancez via une commande. Plutôt simple.
Allez dans le fichier build.gradle
et copiez le code suivant :
//Déclaration de la tache nommée "hello"
task hello {
doLast {
println 'Hello world!'
}
}
Maintenant lancez dans votre terminal :
$ ./gradlew tasks --all
Voilà ! Vous venez de programmer une tâche dans Gradle. Gradle peut faire beaucoup de choses de manière automatique. Tout est une task
ou une variable
dans Gradle.
Lancer mon Kotlin 🚀
Puisque vous avez défini lors du gradle init
que c'était une application Kotlin, Gradle a déjà tout configuré pour vous. Il a même créé un Hello world
dans /src/main/myKotlinApp/App.kt
Sous le capot 🚙: En réalité, Gradle a appliqué un template d'application qui comprend une structure de dossiers et un set de plugin
permettant de réaliser rapidement une application Kotlin JVM.
Vous trouverez de l'aide sur les plugins basiques de Gradle directement dans la documentation de Gradle ici.

Documenter votre code avec Gradle
- Installez le plugin "dokka" et lancer le
- Ajouter des commentaires KDoc complet
- Relancez la tâche Gradle
dokka
Voilà !
Gradle est un super outil à tout faire pour la vie du développeur. Vous pouvez l'utiliser pour faire des choses simples qui ne nécessitent un langage de programmation complet :
- Traiter des fichiers en masse (renommage, déplacement, etc.)
- Générer des classes et du code pour vous aider (vous allez le voir beaucoup sur Android)
- Envoyer des données dans une base de données depuis des fichiers (ETL)
- Redimensionner en masse des images automatiquement (c'est ce qui est utilisé par Android Studio pour les assets android par exemple)
- etc. Sky is the limit ☁️