Gradle

[TP 2/4] - Génie Logiciel L3

Gradle est un logiciel permettant de construire automatiquement des projets sur plusieurs langages, notamment Java, Groovy, ou C++. Grâce à un fichier de configuration, vous allez pouvoir indiquer à Gradle l’ensemble des dépendances de votre projet, les étapes de construction (la phase de build), et automatiser tout ce pan de la gestion de votre code. Désormais, Gradle s’occupe de maintenir vos dépendances et de les télécharger si besoin est, mais également de créer le binaire de votre application, de démarrer des tests automatiquement au build, et bien plus encore…

Démarrage

Cloner le projet de départ :

git clone https://framagit.org/uca/genie-logiciel-l3/helper-tp2.git

Dans ce projet, nous avons un ensemble de fichiers et de dossiers :

  • gradle/ : Ce dossier contient le wrapper de Gradle (c’est-à-dire, l’exécutable) ;
  • app/src : Ce dossier contient nos sources Java ;
  • settings.gradle : Permet de gérer le nom de build et les sous projets ;
  • gradlew et gradlew.bat : Ce sont les fichiers pour lancer Gradle, le premier sous Linux, le second sous Windows ;
  • app/build.gradle : C’est le fichier qui nous permet de configurer notre Gradle !

Avant de regarder plus en détail ce dernier fichier, lançons notre première commande Gradle, elle va vous permettre de lister les tâches que Gradle va pouvoir accomplir pour vous sur ce projet :

./gradlew tasks

Si vous avez une erreur “Permission non accordée”, pensez à rendre Gradle exécutable :

chmod +x ./gradlew

Comme vous pouvez le constater avec le résultat de la commande, Gradle sait effectuer de nombreuses actions très utiles au quotidien (builder votre projet, lancer les tests, vérifier les dépendances, etc). Regardons un peu plus en détail comment tout cela fonctionne, avec le fichier build.gradle.

Gradle sous la loupe

plugins {
    id 'application'
}

repositories {
    mavenCentral()
}

dependencies {
    implementation("io.javalin:javalin:7.1.0")
    implementation("org.slf4j:slf4j-simple:2.0.17")
}

java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(21)
    }
}

application {
    mainClass = 'org.example.App'
}
  • plugins indique que nous avons construisons une application ;
  • repositories préciser qu’il faut aller chercher les dépendances sur le dépot de MavenCentral ;
  • dependancies liste les dépendances nécessaires pour contruire notre application ;
  • java précise que nous allons utiliser le langage Java et quelle version ;
  • application contient mainClass qui définit la classe principale de notre application ;

Et si on buildait ?

Lancer les commandes suivantes, que se passe-t-il ?

./gradlew run
./gradlew build
./gradlew clean

TP Précédent | TP Suivant