Dernière modification : Dec 08 , 2024

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'
}