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 ;gradlewetgradlew.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'
}
pluginsindique que nous avons construisons une application ;repositoriespréciser qu’il faut aller chercher les dépendances sur le dépot de MavenCentral ;dependanciesliste les dépendances nécessaires pour contruire notre application ;javaprécise que nous allons utiliser le langage Java et quelle version ;applicationcontientmainClassqui 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