EN · DE · RU · FR · ES

#1872 : build.gradle.kts (projectforge-common)

projectforge-common/build.gradle.kts Configuration de build Gradle — module projectforge-common, projectforge-common/build.gradle.kts 93 lignes · 66 lignes de code · 14 commentaires · 13 lignes vides
Fichier de build Gradle en DSL Kotlin pour le module de bibliothèque fondamental projectforge-common. Configure le plugin Kotlin JVM avec une cible Java 17, l'exécution des tests JUnit 5 Platform, et un ensemble complet de dépendances API incluant les frameworks de journalisation (SLF4J, Logback, pont Log4j2-vers-SLF4J), les bibliothèques Apache Commons, Kotlin stdlib/reflect, et Zip4j pour les opérations ZIP. Contient une tâche Gradle personnalisée commentée pour la génération de propriétés Git.

Architecture

Configuration des plugins

PluginObjectif
buildlogic.pf-module-conventionsPlugin de conventions Gradle personnalisé ProjectForge (défini dans buildSrc/) — applique une logique de build partagée à tous les modules (paramètres de compilation Java, configuration du dépôt, contrôles de qualité du code)
org.jetbrains.kotlin.jvmPlugin de compilation Kotlin JVM — permet la compilation Kotlin aux côtés des sources Java

Paramètres de compilation Kotlin

tasks.withType<KotlinCompile> {
    compilerOptions {
        jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17)
    }
}

Tout le code source Kotlin est compilé en bytecode Java 17. Cela correspond à la base Java 17 du projet (également reflétée dans l'énumération DatabaseDialect référençant les dialectes Hibernate 6 et l'utilisation de l'espace de noms Jakarta EE ailleurs).

Configuration des tests

tasks.withType<Test> {
    useJUnitPlatform()
    testLogging {
        events("PASSED", "FAILED", "SKIPPED", "STANDARD_OUT", "STANDARD_ERROR")
        exceptionFormat = org.gradle.api.tasks.testing.logging.TestExceptionFormat.FULL
        showStandardStreams = true
    }
}

Utilise JUnit Platform (JUnit 5) pour la découverte et l'exécution des tests. La journalisation des tests est configurée pour fournir une sortie détaillée montrant tous les événements de test, les traces de pile complètes des exceptions, et les flux standard de sortie/erreur — utile pour déboguer les échecs de test dans les environnements CI/CD.

Dépendances (portée API)

DépendanceObjectifSource de version
org.slf4j:slf4j-apiAPI de façade de journalisation SLF4Jlibs.org.slf4j.api (catalogue de versions)
org.slf4j:jul-to-slf4jPont java.util.logging vers SLF4Jlibs.org.slf4j.jul.to.slf4j
ch.qos.logback:logback-classicImplémentation de journalisation Logbacklibs.ch.qos.logback.classic
org.apache.logging.log4j:log4j-apiAPI Log4j2 (pour le pont)libs.org.apache.logging.log4j.api
org.apache.logging.log4j:log4j-to-slf4jPont Log4j2 vers SLF4Jlibs.org.apache.logging.log4j.to.slf4j
commons-beanutils:commons-beanutilsApache Commons BeanUtils (introspection de propriétés)libs.commons.beanutils
org.jetbrains.kotlin:kotlin-stdlibBibliothèque standard Kotlinlibs.org.jetbrains.kotlin.stdlib
org.jetbrains.kotlin:kotlin-reflectBibliothèque de réflexion Kotlinlibs.org.jetbrains.kotlin.reflect
org.apache.commons:commons-collections4Apache Commons Collections 4catalogue de versions
org.apache.commons:commons-lang3Apache Commons Lang 3 (StringUtils, etc.)catalogue de versions
net.lingala.zip4j:zip4jBibliothèque d'archives ZIP (compression, extraction)libs.net.lingala.zip4j.zip4j

Dépendances de test

DépendancePortée
project(":projectforge-commons-test")Module utilitaire de test fournissant une infrastructure de test partagée
org.mockito:mockito-coreFramework de simulation Mockito pour les tests unitaires

Architecture de journalisation

La pile de journalisation est soigneusement stratifiée :

  1. Code applicatif utilise l'API SLF4J (la façade)
  2. Logback est l'implémentation de journalisation réelle
  3. Pont java.util.logging → SLF4J capture la sortie du journaliseur JDK des bibliothèques tierces
  4. Pont Log4j2 → SLF4J capture la sortie du journaliseur Log4j2 des bibliothèques tierces

Cela garantit que TOUTE la sortie de journalisation (quel que soit l'API de journalisation utilisée par une bibliothèque) est acheminée via SLF4J vers Logback, permettant une configuration centralisée de la journalisation via logback-spring.xml.

Commenté : Générateur de propriétés Git

Un grand bloc commenté montre une tâche Gradle personnalisée (generateGitProperties) qui utilisait le plugin org.ajoberstar.grgit pour générer git.properties avec des métadonnées de build (branche, ID de commit, heure de build, indicateur de modification). La dépendance au plugin Grgit est également commentée (//id("org.ajoberstar.grgit") version "5.3.0"). Cela suggère que la fonctionnalité de propriétés Git a été migrée vers un autre module ou remplacée par un mécanisme différent.

L'utilisation d'un catalogue de versions Gradle (libs.versions.toml dans le répertoire gradle/) centralise la gestion des versions des dépendances. La syntaxe libs.<alias> référence les entrées du catalogue TOML, faisant des mises à jour de version un changement en un seul point dans tous les modules.

Historique Git

69441cecd ZipMode et ZipUtils déplacés dans common (pour disponibilité dans les scripts)
e21feaa61 Jeux Gradle...
1d2849687 WIP : Dépendances Gradle, (tous les tests OK)
98393fe4c WIP : gradle...
ca9851ba0 WIP : gradle...
41e2d26e7 WIP : gradle...
e31db0a87 WIP : gradle...
2ab2292fb WIP : gradle...