EN · DE · RU · FR · ES

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

projectforge-common/build.gradle.kts Configuración de compilación Gradle — módulo projectforge-common, projectforge-common/build.gradle.kts 93 líneas · 66 código · 14 comentarios · 13 en blanco
Archivo de compilación Gradle Kotlin DSL para el módulo de biblioteca fundamental projectforge-common. Configura el plugin Kotlin JVM con destino Java 17, ejecución de pruebas JUnit 5 Platform y un conjunto completo de dependencias API que incluyen frameworks de registro (SLF4J, Logback, puente Log4j2-to-SLF4J), bibliotecas Apache Commons, Kotlin stdlib/reflect y Zip4j para operaciones ZIP. Contiene una tarea Gradle personalizada comentada para la generación de propiedades Git.

Arquitectura

Configuración de plugins

PluginPropósito
buildlogic.pf-module-conventionsPlugin de convenciones Gradle personalizado de ProjectForge (definido en buildSrc/) — aplica lógica de compilación compartida en todos los módulos (configuración de compilación Java, configuración de repositorio, controles de calidad de código)
org.jetbrains.kotlin.jvmPlugin de compilador Kotlin JVM — permite la compilación de Kotlin junto con fuentes Java

Configuración de compilación Kotlin

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

Todo el código fuente Kotlin se compila a bytecode Java 17. Esto se alinea con la línea base Java 17 del proyecto (también reflejada en el enum DatabaseDialect que referencia dialectos Hibernate 6 y el uso del espacio de nombres Jakarta EE en otros lugares).

Configuración de pruebas

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

Utiliza JUnit Platform (JUnit 5) para el descubrimiento y ejecución de pruebas. El registro de pruebas está configurado para una salida detallada que muestra todos los eventos de prueba, trazas completas de excepciones y flujos de salida/error estándar — útil para depurar fallos de prueba en entornos CI/CD.

Dependencias (ámbito API)

DependenciaPropósitoFuente de versión
org.slf4j:slf4j-apiFacade de registro SLF4J APIlibs.org.slf4j.api (catálogo de versiones)
org.slf4j:jul-to-slf4jPuente de java.util.logging a SLF4Jlibs.org.slf4j.jul.to.slf4j
ch.qos.logback:logback-classicImplementación de registro Logbacklibs.ch.qos.logback.classic
org.apache.logging.log4j:log4j-apiAPI Log4j2 (para puente)libs.org.apache.logging.log4j.api
org.apache.logging.log4j:log4j-to-slf4jPuente de Log4j2 a SLF4Jlibs.org.apache.logging.log4j.to.slf4j
commons-beanutils:commons-beanutilsApache Commons BeanUtils (introspección de propiedades)libs.commons.beanutils
org.jetbrains.kotlin:kotlin-stdlibBiblioteca estándar de Kotlinlibs.org.jetbrains.kotlin.stdlib
org.jetbrains.kotlin:kotlin-reflectBiblioteca de reflexión de Kotlinlibs.org.jetbrains.kotlin.reflect
org.apache.commons:commons-collections4Apache Commons Collections 4catálogo de versiones
org.apache.commons:commons-lang3Apache Commons Lang 3 (StringUtils, etc.)catálogo de versiones
net.lingala.zip4j:zip4jBiblioteca de archivos ZIP (compresión, extracción)libs.net.lingala.zip4j.zip4j

Dependencias de prueba

DependenciaÁmbito
project(":projectforge-commons-test")Módulo de utilidades de prueba que proporciona infraestructura de prueba compartida
org.mockito:mockito-coreFramework de simulación Mockito para pruebas unitarias

Arquitectura de registro

La pila de registro está cuidadosamente estratificada:

  1. Código de aplicación utiliza API SLF4J (la fachada)
  2. Logback es la implementación de registro real
  3. Puente java.util.logging → SLF4J captura la salida del registrador JDK de bibliotecas de terceros
  4. Puente Log4j2 → SLF4J captura la salida del registrador Log4j2 de bibliotecas de terceros

Esto asegura que TODA la salida de registro (independientemente de la API de registro que utilice una biblioteca) se enrute a través de SLF4J a Logback, permitiendo una configuración de registro centralizada mediante logback-spring.xml.

Comentado: Generador de propiedades Git

Un bloque grande comentado muestra una tarea Gradle personalizada (generateGitProperties) que utilizaba el plugin org.ajoberstar.grgit para generar git.properties con metadatos de compilación (rama, ID de commit, hora de compilación, indicador de suciedad). La dependencia del plugin Grgit también está comentada (//id("org.ajoberstar.grgit") version "5.3.0"). Esto sugiere que la funcionalidad de propiedades Git se migró a otro módulo o fue reemplazada por un mecanismo diferente.

El uso de un catálogo de versiones de Gradle (libs.versions.toml en el directorio gradle/) centraliza la gestión de versiones de dependencias. La sintaxis libs.<alias> referencia entradas del catálogo TOML, haciendo que las actualizaciones de versión sean un cambio de punto único en todos los módulos.

Historial Git

69441cecd ZipMode y ZipUtils movidos a common (para disponibilidad en scripts)
e21feaa61 Juegos de Gradle...
1d2849687 WIP: Dependencias Gradle, (todas las pruebas OK)
98393fe4c WIP: gradle...
ca9851ba0 WIP: gradle...
41e2d26e7 WIP: gradle...
e31db0a87 WIP: gradle...
2ab2292fb WIP: gradle...