Manipulation de fichiers en Groovy
Développer un script Gradle qui effectue des opérations de manipulation de fichiers, d'archives, et de copie.
Introduction
Développer un script Gradle qui effectue des opérations de manipulation de fichiers, d'archives, et de copie.
Etapes de l'exercice
Initialisation du projet
- Créez un nouveau projet Gradle.
Développement du script Gradle :
- Créez un répertoire source et placez-y quelques fichiers fictifs.
- Utilisez une FileTree pour représenter le contenu du répertoire source.
- Créez un répertoire destination pour stocker les résultats des opérations.
Manipulation de fichiers et d'archives
Utilisez les API de FileTree et File pour effectuer les opérations suivantes :
- Affichez la liste des fichiers du répertoire source.
- Créez un fichier readme.txt dans le répertoire destination avec une description de votre projet.
- Créez une archive ZIP contenant les fichiers du répertoire source et placez-la dans le répertoire destination.
Copie de fichiers
Utilisez la tâche Copy de Gradle pour copier les fichiers du répertoire source vers le répertoire destination.
- Sélectionnez uniquement les fichiers de type .txt.
- Créez un répertoire docs dans destination pour stocker les fichiers copiés.
Tester le projet
̀Exécutez les tâches à l'aide de la commande ./gradlew listFiles createReadme createZip copyTxtFiles pour vérifier que les opérations sont effectuées correctement.
Point bonus
Ajoutez une tâche clean pour supprimer le répertoire destination après les opérations.
// build.gradle
task clean {
doLast {
delete 'destination'
}
}
Cet exercice vous permettra de manipuler les API de FileTree, File, et d'effectuer des opérations de copie et d'archives avec Gradle et Groovy.
Solution du projet
Initialisation du projet
// build.gradle
plugins {
id 'java'
}
Développement du script Gradle
// build.gradle
task listFiles {
doLast {
fileTree('source').each { println it }
}
}
task createReadme {
doLast {
file('destination/readme.txt').text = 'Description du projet'
}
}
task createZip(type: Zip) {
from 'source'
archiveFileName = 'sourceFiles.zip'
destinationDir = file('destination')
}
Manipulation de fichiers et archives
// build.gradle
task listFiles {
doLast {
fileTree('source').each { println it }
}
}
task createReadme {
doLast {
file('destination/readme.txt').text = 'Description du projet'
}
}
task createZip(type: Zip) {
from 'source'
archiveFileName = 'sourceFiles.zip'
destinationDir = file('destination')
}
Copie de fichiers
// build.gradle
task copyTxtFiles(type: Copy) {
from 'source'
into 'destination/docs'
include '**/*.txt'
}