EN · DE · RU · FR · ES

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

projectforge-common/build.gradle.kts Gradle-Build-Konfiguration — Modul projectforge-common, projectforge-common/build.gradle.kts 93 Zeilen · 66 Code · 14 Kommentare · 13 leer
Gradle Kotlin-DSL-Build-Datei für das grundlegende Bibliotheksmodul projectforge-common. Konfiguriert das Kotlin-JVM-Plugin mit Java-17-Ziel, JUnit-5-Plattform-Testausführung und einem umfassenden Satz von API-Abhängigkeiten, darunter Logging-Frameworks (SLF4J, Logback, Log4j2-to-SLF4J-Brücke), Apache-Commons-Bibliotheken, Kotlin-Stdlib/Reflect und Zip4j für ZIP-Operationen. Enthält eine auskommentierte benutzerdefinierte Gradle-Aufgabe zur Generierung von Git-Eigenschaften.

Architektur

Plugin-Konfiguration

PluginZweck
buildlogic.pf-module-conventionsBenutzerdefiniertes ProjectForge-Gradle-Konventionsplugin (definiert in buildSrc/) — wendet gemeinsame Build-Logik auf alle Module an (Java-Kompilierungseinstellungen, Repository-Konfiguration, Codequalitätsprüfungen)
org.jetbrains.kotlin.jvmKotlin-JVM-Compiler-Plugin — ermöglicht Kotlin-Kompilierung neben Java-Quellen

Kotlin-Kompilierungseinstellungen

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

Der gesamte Kotlin-Quellcode wird zu Java-17-Bytecode kompiliert. Dies entspricht der Java-17-Baseline des Projekts (auch im DatabaseDialect-Enum, der auf Hibernate-6-Dialekte und die Jakarta-EE-Namensraumverwendung an anderer Stelle verweist).

Testkonfiguration

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

Verwendet die JUnit-Plattform (JUnit 5) zur Testermittlung und -ausführung. Die Testprotokollierung ist für detaillierte Ausgaben konfiguriert, die alle Testereignisse, vollständige Ausnahme-Stapelverfolgungen und Standardausgabe-/Fehlerströme anzeigt — nützlich zum Debuggen von Testfehlern in CI/CD-Umgebungen.

Abhängigkeiten (API-Bereich)

AbhängigkeitZweckVersionsquelle
org.slf4j:slf4j-apiSLF4J-Logging-Fassade-APIlibs.org.slf4j.api (Versionskatalog)
org.slf4j:jul-to-slf4jBrückt java.util.logging zu SLF4Jlibs.org.slf4j.jul.to.slf4j
ch.qos.logback:logback-classicLogback-Logging-Implementierunglibs.ch.qos.logback.classic
org.apache.logging.log4j:log4j-apiLog4j2-API (zur Brückung)libs.org.apache.logging.log4j.api
org.apache.logging.log4j:log4j-to-slf4jBrückt Log4j2 zu SLF4Jlibs.org.apache.logging.log4j.to.slf4j
commons-beanutils:commons-beanutilsApache Commons BeanUtils (Eigenschaftsintrospection)libs.commons.beanutils
org.jetbrains.kotlin:kotlin-stdlibKotlin-Standardbibliotheklibs.org.jetbrains.kotlin.stdlib
org.jetbrains.kotlin:kotlin-reflectKotlin-Reflektionsbibliotheklibs.org.jetbrains.kotlin.reflect
org.apache.commons:commons-collections4Apache Commons Collections 4Versionskatalog
org.apache.commons:commons-lang3Apache Commons Lang 3 (StringUtils, etc.)Versionskatalog
net.lingala.zip4j:zip4jZIP-Archivbibliothek (Komprimierung, Extraktion)libs.net.lingala.zip4j.zip4j

Testabhängigkeiten

AbhängigkeitBereich
project(":projectforge-commons-test")Testhilfsmodul, das gemeinsame Testinfrastruktur bereitstellt
org.mockito:mockito-coreMockito-Mocking-Framework für Unit-Tests

Logging-Architektur

Der Logging-Stack ist sorgfältig geschichtet:

  1. Anwendungscode verwendet die SLF4J-API (die Fassade)
  2. Logback ist die eigentliche Logging-Implementierung
  3. java.util.logging → SLF4J-Brücke fängt JDK-Logger-Ausgaben von Drittanbieterbibliotheken ab
  4. Log4j2 → SLF4J-Brücke fängt Log4j2-Logger-Ausgaben von Drittanbieterbibliotheken ab

Dies stellt sicher, dass ALLE Logausgaben (unabhängig davon, welche Logging-API eine Bibliothek verwendet) über SLF4J an Logback weitergeleitet werden, was eine zentrale Logkonfiguration über logback-spring.xml ermöglicht.

Auskommentiert: Git-Eigenschaftengenerator

Ein großer auskommentierter Block zeigt eine benutzerdefinierte Gradle-Aufgabe (generateGitProperties), die das Plugin org.ajoberstar.grgit verwendete, um git.properties mit Build-Metadaten (Branch, Commit-ID, Build-Zeit, Dirty-Flag) zu generieren. Die Grgit-Plugin-Abhängigkeit ist ebenfalls auskommentiert (//id("org.ajoberstar.grgit") version "5.3.0"). Dies deutet darauf hin, dass die Git-Eigenschaften-Funktionalität in ein anderes Modul migriert oder durch einen anderen Mechanismus ersetzt wurde.

Die Verwendung eines Gradle-Versionskatalogs (libs.versions.toml im Verzeichnis gradle/) zentralisiert das Abhängigkeitsversionsmanagement. Die Syntax libs.<alias> verweist auf Einträge aus dem TOML-Katalog, was Versionsupgrades zu einer Änderung an einer einzigen Stelle für alle Module macht.

Git-Verlauf

69441cecd ZipMode und ZipUtils nach common verschoben (für Verfügbarkeit in Skripten)
e21feaa61 Gradle-Spielereien...
1d2849687 WIP: Gradle-Abhängigkeiten, (alle Tests OK)
98393fe4c WIP: gradle...
ca9851ba0 WIP: gradle...
41e2d26e7 WIP: gradle...
e31db0a87 WIP: gradle...
2ab2292fb WIP: gradle...