Chapitre Premiers pas avec Gradle
Créer des tâches personnalisées avec Gradle
Dans cette leçon, nous allons créer une tâche simple.
Contenu de l'exercice
-
Créer un nouveau projet Gradle en Kotlin
-
Créer une tâche
myproperties
Gradle qui copie le fichier "server.properties" dans un répertoiregenerated
. -
Le répertoire `generated doit être créé s'il n'existe pas.
-
Le fichier "server.properties" contient une propriété
server=https://ggogle.fr
Vérifier la présence de la tâche en listant les tâches du build
Exécuter la tâche
- Ajouter une dépendance entre la tache
build
etmyproperties
que le build puisse exécuter notre tâche
Vérifier le fonctionnement de la dépendance en exécutant
build
.
Amélioration 1
Séparer l'action de création de répertoire de l'action de création du fichier et créer une dépendance.
Amélioration 2
Rendre le build incremental en utilisant la notion d'Output
.
Cette partie peut vous aider Lien
Amélioration 3
Nous souhaitons désormais utiliser un fichier server.properties
qui serait stocké dans le répertoire src/conf
.
Nous remplacerons la création de fichier manuelle par une tâche Copy qui réalise l'opération de copier le fichier dans le répertoire generated.
Corrections
Structure du projet attendu
mon-projet/
|-- build.gradle
|-- settings.gradle
|-- src/
| |-- conf/
| | |-- server.properties
|-- generated/
Exemple de code
// build.gradle
plugins {
id 'java'
}
// Création du répertoire "generated" s'il n'existe pas
task createDirectory {
doLast {
file("generated").mkdirs()
}
}
createDirectory.outputs.dir("generated")
// Création du fichier "server.properties" dans le répertoire "generated"
task myproperties(type: Copy, dependsOn: createDirectory) {
into('generated')
outputs.dir("generated")
}
// Ajout de la dépendance entre "build" et "myproperties"
build.dependsOn myproperties
// Configurer la tâche Copy pour copier le fichier depuis "src/conf" vers "generated"
myproperties {
from('src/conf')
include('server.properties')
}
// Configuration de l'incrémentalité en utilisant la notion d'Output
myproperties.inputs.file("src/conf/server.properties")
// Exemple d'utilisation de propriétés du projet
ext {
myProperty = 'valeur'
}
// Tâche de test pour afficher la propriété définie
task testProperty {
doLast {
println("Contenu de la propriété : $myProperty")
}
}
Ressources
Voici des ressources intéressantes :