Article 1 : Créer un Plugin Gradle de A à Z avec la commande gradle init
Publié le 23 September 2025
1. Introduction
Démarrer un nouveau projet de plugin Gradle peut sembler intimidant. Heureusement, Gradle fournit un assistant interactif puissant, la tâche init, qui génère une structure de projet complète, propre et prête à l’emploi. Ce guide vous montrera comment utiliser cet outil pour créer une base de plugin saine, en expliquera la structure et vous montrera comment lancer les premières tâches de build.
2. Étape 1 : Lancer l’assistant de projet
La commande gradle init est le point de départ. Elle lance un assistant en ligne de commande qui vous pose une série de questions pour configurer le projet.
Ouvrez votre terminal dans un dossier vide et lancez :
gradle init
L’assistant vous guidera. Voici les choix à faire pour un plugin Gradle écrit en Kotlin :
- 
Select type of project to generate: Choisissez
Gradle plugin. - 
Select implementation language: Choisissez
Kotlin. - 
Select build script DSL: Choisissez
Kotlin. - 
Project name: Entrez un nom pour votre projet (ex:
site-baker). - 
Plugin id: Donnez un identifiant unique à votre plugin (ex:
com.cheroliv.site-baker). - 
Plugin class: Spécifiez le nom de la classe d’implémentation (ex:
com.cheroliv.SiteBakerPlugin). 
Une fois terminé, Gradle génère une arborescence de fichiers complète.
3. Étape 2 : Comprendre la structure générée
L’assistant crée une structure de projet multi-modules, séparant le projet racine du code source du plugin lui-même.
.
├── gradle/
│   └── wrapper/
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── plugin/
│   ├── build.gradle.kts
│   └── src/
│       ├── main/
│       │   └── kotlin/
│       │       └── com/cheroliv/SiteBakerPlugin.kt
│       ├── test/
│       │   └── kotlin/
│       │       └── com/cheroliv/SiteBakerPluginTest.kt
│       └── functionalTest/
│           └── kotlin/
│               └── com/cheroliv/SiteBakerPluginFunctionalTest.kt
└── settings.gradle.kts
3.1. Fichiers et dossiers clés
- 
settings.gradle.kts: Ce fichier à la racine définit les modules inclus dans le build. Ici, il inclut le sous-projetplugin. [source,kotlin] ---- rootProject.name = "site-baker" include("plugin") ---- - 
plugin/build.gradle.kts: C’est le cœur de la configuration de votre plugin. Il applique le pluginjava-gradle-plugin, déclare les dépendances et configure les métadonnées du plugin. [source,kotlin] ---- plugins {java-gradle-pluginalias(libs.plugins.kotlin.jvm) }gradlePlugin { val siteBaker by plugins.creating { id = "com.cheroliv.site-baker" implementationClass = "com.cheroliv.SiteBakerPlugin" } } ---- * `src/main/` : Contient le code source de votre plugin. * `src/test/` : Contient les tests unitaires. Ils s'exécutent rapidement et en isolation. * `src/functionalTest/` : Contient les tests fonctionnels. Ces tests utilisent `GradleRunner` pour exécuter une version complète de Gradle sur un projet de test, simulant ainsi une utilisation réelle de votre plugin. 
4. Étape 3 : Construire et tester le plugin
Le projet généré inclut le Gradle Wrapper (gradlew). C’est la manière recommandée d’exécuter Gradle, car elle garantit que tous les développeurs utilisent la même version, assurant des builds reproductibles.
4.1. Tâches de base
- 
Construire le projet : Cette commande compile votre code, exécute tous les tests (unitaires et fonctionnels) et assemble le JAR de votre plugin. [source,bash] ---- ./gradlew build ----
 - 
Lancer toutes les vérifications : La tâche
checkest un alias qui exécute toutes les tâches de vérification, y compristestetfunctionalTest. [source,bash] ---- ./gradlew check ---- - 
Exécuter uniquement les tests unitaires : Pour un feedback rapide pendant le développement. [source,bash] ---- ./gradlew test ----
 
La commande ./gradlew :test, qui cible explicitement le projet racine, échouera car ce dernier ne contient pas de tests. En revanche :
*   ./gradlew test fonctionne car Gradle exécute la tâche test sur tous les sous-projets qui la possèdent (ici, le module plugin).
*   ./gradlew :plugin:test est la commande la plus explicite pour lancer les tests du module plugin uniquement.
- 
Exécuter uniquement les tests fonctionnels : Plus lents, ils sont utiles pour valider le comportement global. [source,bash] ---- ./gradlew functionalTest ----
 
Le résultat des tests est généré dans le dossier plugin/build/reports/tests/. Vous pouvez ouvrir le fichier index.html dans votre navigateur pour un rapport détaillé.
5. Conclusion
En quelques minutes, gradle init vous a fourni une base de projet solide, moderne et complète pour le développement de votre plugin. Vous disposez d’une structure claire, de tests unitaires et fonctionnels préconfigurés, et d’un système de build reproductible grâce au Gradle Wrapper.
Vous êtes maintenant prêt à ouvrir le fichier SiteBakerPlugin.kt et à commencer à y ajouter la logique métier de votre plugin !