EN · DE · RU · FR · ES

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

projectforge-common/build.gradle.kts Конфигурация сборки Gradle — модуль projectforge-common, projectforge-common/build.gradle.kts 93 строки · 66 кода · 14 комментариев · 13 пустых
Файл сборки Gradle на Kotlin DSL для базового библиотечного модуля projectforge-common. Настраивает плагин Kotlin JVM с целевой платформой Java 17, выполнение тестов JUnit 5 Platform и полный набор API-зависимостей, включая фреймворки логирования (SLF4J, Logback, мост Log4j2-to-SLF4J), библиотеки Apache Commons, Kotlin stdlib/reflect и Zip4j для операций с ZIP. Содержит закомментированную пользовательскую задачу Gradle для генерации Git-свойств.

Архитектура

Конфигурация плагинов

ПлагинНазначение
buildlogic.pf-module-conventionsПользовательский конвенционный плагин ProjectForge Gradle (определён в buildSrc/) — применяет общую логику сборки для всех модулей (настройки компиляции Java, конфигурация репозиториев, проверки качества кода)
org.jetbrains.kotlin.jvmПлагин компилятора Kotlin JVM — включает компиляцию Kotlin вместе с исходниками Java

Настройки компиляции Kotlin

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

Весь исходный код Kotlin компилируется в байт-код Java 17. Это соответствует базовой версии Java 17 проекта (также отражено в перечислении DatabaseDialect, ссылающемся на диалекты Hibernate 6 и использование пространства имён Jakarta EE в других местах).

Конфигурация тестов

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

Использует JUnit Platform (JUnit 5) для обнаружения и выполнения тестов. Логирование тестов настроено на детальный вывод, показывающий все события тестов, полные стектрейсы исключений и потоки стандартного вывода/ошибок — полезно для отладки сбоев тестов в средах CI/CD.

Зависимости (область API)

ЗависимостьНазначениеИсточник версии
org.slf4j:slf4j-apiФасад логирования SLF4J APIlibs.org.slf4j.api (каталог версий)
org.slf4j:jul-to-slf4jМост java.util.logging к SLF4Jlibs.org.slf4j.jul.to.slf4j
ch.qos.logback:logback-classicРеализация логирования Logbacklibs.ch.qos.logback.classic
org.apache.logging.log4j:log4j-apiAPI Log4j2 (для моста)libs.org.apache.logging.log4j.api
org.apache.logging.log4j:log4j-to-slf4jМост Log4j2 к SLF4Jlibs.org.apache.logging.log4j.to.slf4j
commons-beanutils:commons-beanutilsApache Commons BeanUtils (интроспекция свойств)libs.commons.beanutils
org.jetbrains.kotlin:kotlin-stdlibСтандартная библиотека Kotlinlibs.org.jetbrains.kotlin.stdlib
org.jetbrains.kotlin:kotlin-reflectБиблиотека рефлексии Kotlinlibs.org.jetbrains.kotlin.reflect
org.apache.commons:commons-collections4Apache Commons Collections 4каталог версий
org.apache.commons:commons-lang3Apache Commons Lang 3 (StringUtils и т.д.)каталог версий
net.lingala.zip4j:zip4jБиблиотека ZIP-архивов (сжатие, извлечение)libs.net.lingala.zip4j.zip4j

Тестовые зависимости

ЗависимостьОбласть
project(":projectforge-commons-test")Модуль тестовых утилит, предоставляющий общую тестовую инфраструктуру
org.mockito:mockito-coreФреймворк мокирования Mockito для модульных тестов

Архитектура логирования

Стек логирования тщательно выстроен:

  1. Код приложения использует SLF4J API (фасад)
  2. Logback является фактической реализацией логирования
  3. Мост java.util.logging → SLF4J перехватывает вывод JDK-логгера от сторонних библиотек
  4. Мост Log4j2 → SLF4J перехватывает вывод логгера Log4j2 от сторонних библиотек

Это гарантирует, что ВЕСЬ вывод логов (независимо от того, какой API логирования использует библиотека) направляется через SLF4J в Logback, обеспечивая централизованную конфигурацию логирования через logback-spring.xml.

Закомментировано: Генератор Git-свойств

Большой закомментированный блок показывает пользовательскую задачу Gradle (generateGitProperties), которая использовала плагин org.ajoberstar.grgit для генерации git.properties с метаданными сборки (ветка, ID коммита, время сборки, флаг "грязного" состояния). Зависимость плагина Grgit также закомментирована (//id("org.ajoberstar.grgit") version "5.3.0"). Это предполагает, что функциональность Git-свойств была перенесена в другой модуль или заменена другим механизмом.

Использование каталога версий Gradle (libs.versions.toml в каталоге gradle/) централизует управление версиями зависимостей. Синтаксис libs.<алиас> ссылается на записи из TOML-каталога, что делает обновление версий единоразовым изменением для всех модулей.

История Git

69441cecd ZipMode и ZipUtils перемещены в common (для доступности в скриптах)
e21feaa61 Gradle игры...
1d2849687 WIP: зависимости Gradle (все тесты OK)
98393fe4c WIP: gradle...
ca9851ba0 WIP: gradle...
41e2d26e7 WIP: gradle...
e31db0a87 WIP: gradle...
2ab2292fb WIP: gradle...