Dernière modification : Dec 08 , 2024
Dernière modification : Dec 08 , 2024

Rappel sur les Closures

Objectif : Renforcer la compréhension des structures de données en Groovy et leur utilisation dans le contexte de scripts Gradle.

Instructions

  1. Liste de Noms :

    • Créez une liste de noms de personnes dans votre script Gradle.
    • Utilisez une boucle pour afficher chaque nom sur une ligne distincte.
  2. Map de Projets :

    • Créez une map représentant différents projets, où les clés sont les noms des projets et les valeurs sont les descriptions correspondantes.
    • Parcourez la map pour afficher le nom et la description de chaque projet.
  3. Filtrage de Noms : Utilisez une closure pour filtrer les noms de la liste créée précédemment. Par exemple, ne sélectionnez que les noms qui commencent par la lettre "A". Affichez les noms filtrés.

  4. Ajout de Tâches Dynamiquement : Créez une liste de tâches Gradle à l'aide d'une boucle. Chaque tâche doit effectuer une action simple, comme afficher un message. Affichez la liste des tâches créées.

Exemple de structure du projet

mon-projet/
|-- build.gradle
|-- src/
    |-- main/
        |-- java/
        |-- resources/

Exemple de solution attendue

// build.gradle

// Liste de noms
def listeNoms = ["Alice", "Bob", "Charlie", "Dave"]

// Affichage des noms
println("Liste de noms :")
listeNoms.each { nom ->
    println("- $nom")
}

// Map de projets
def projets = [
    "ProjetA": "Description du projet A",
    "ProjetB": "Description du projet B",
    "ProjetC": "Description du projet C"
]

// Affichage des projets
println("\nListe de projets :")
projets.each { nom, description ->
    println("- $nom : $description")
}

// Filtrage des noms commençant par "A"
def nomsFiltres = listeNoms.findAll { nom -> nom.startsWith("A") }
println("\nNoms commençant par 'A' : $nomsFiltres")

// Ajout de tâches dynamiquement
def taches = ["Tache1", "Tache2", "Tache3"]

// Création de tâches Gradle
taches.each { tache ->
    task "$tache" {
        doLast {
            println("Exécution de la tâche : $tache")
        }
    }
}

// Affichage des tâches créées
println("\nListe des tâches créées :")
tasks.each { tache ->
    println("- ${tache.name}")
}