Dernière modification : Dec 08 , 2024

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épertoire generated.

  • 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 et myproperties 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 :