Dernière modification : Dec 08 , 2024

Introduction

Développer un plugin Gradle qui génère un fichier de configuration personnalisé pour une application Java.

Etapes de l'exercice

Initialisation du projet

  • Créez un nouveau projet Gradle.
  • Configurez le fichier build.gradle pour utiliser la version de Gradle appropriée et appliquer le plugin Java.
// build.gradle

plugins {
    id 'java'
}

repositories {
    jcenter()
}

dependencies {
    implementation 'org.codehaus.groovy:groovy-all:2.5.14'
}

Développement du Plugin :

  • Créez un répertoire src/main/groovy dans le répertoire du projet.
  • À l'intérieur, créez un fichier ConfigGeneratorPlugin.groovy qui implémente l'interface Plugin<Project>.
  • Le plugin doit ajouter une tâche nommée generateConfig au projet.
// src/main/groovy/ConfigGeneratorPlugin.groovy

import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.tasks.TaskAction

class ConfigGeneratorPlugin implements Plugin<Project> {

    @Override
    void apply(Project project) {
        project.task('generateConfig', type: ConfigGeneratorTask)
    }
}

Tâche de Génération de Configuration :

La tâche generateConfig doit créer un fichier de configuration, par exemple, config.properties dans le répertoire build.

Le contenu du fichier de configuration doit être personnalisable et configurable via des propriétés du projet Gradle.

Exemple de contenu du fichier config.properties :

# Configuration generated by the Config Generator Plugin
app.name=MyApp
app.version=1.0
// src/main/groovy/ConfigGeneratorTask.groovy

import org.gradle.api.DefaultTask
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.OutputFile
import org.gradle.api.tasks.TaskAction

class ConfigGeneratorTask extends DefaultTask {

    @Input
    String appName = project.hasProperty('appName') ? project.appName : 'DefaultAppName'

    @Input
    String appVersion = project.hasProperty('appVersion') ? project.appVersion : '1.0'

    @OutputFile
    def configFile = project.file('build/config.properties')

    @TaskAction
    void generateConfig() {
        configFile.text = """
            # Configuration generated by the Config Generator Plugin
            app.name=$appName
            app.version=$appVersion
        """
    }
}

Propriétés Configurables :

Ajoutez des propriétés configurables au plugin pour permettre à l'utilisateur de personnaliser le contenu du fichier de configuration.

Exemple : appName, appVersion.

Utilisation du Plugin :

Appliquez le plugin dans le fichier build.gradle de votre projet principal.

Configurez les propriétés du plugin (par exemple, appName, appVersion).

Exécutez la tâche generateConfig pour générer le fichier de configuration personnalisé.

// build.gradle (du projet principal)

plugins {
    id 'java'
    id 'ConfigGeneratorPlugin'
}

configGenerator {
    appName = 'MyApp'
    appVersion = '1.2.3'
}

Testez Votre Plugin :

Créez un projet Java simple qui utilise votre fichier de configuration généré par le plugin.

Utilisez les valeurs du fichier de configuration dans votre application Java.

Points Bonus (Facultatifs) :

  • Ajoutez une propriété pour spécifier le répertoire de destination du fichier de configuration.
  • Ajoutez une documentation pour votre plugin en utilisant les commentaires Groovy spéciaux (/** ... */).

Ressources Utiles :

Documentation Gradle : https://docs.gradle.org/current/userguide/custom_plugins.html Documentation Groovy : http://groovy-lang.org/documentation.html