Автоматизация сборки приложения
В приложении используется система сборки Gradle. Она отвечает за компиляцию проекта, управление зависимостями, генерацию исходного кода и запуск дополнительных инструментов контроля качества.
Основные задачи
Компиляция
Компиляция Kotlin-кода и сборка проекта:
./gradlew build
Запуск приложения
Для локального запуска используется:
./gradlew run
Генерация jOOQ
Проект использует jOOQ для генерации типобезопасного доступа к базе данных.
Сгенерированный код располагается в каталогах:
src/main/kotlin-jooq-buildbotdb/src/main/kotlin-jooq-maxscaledb/
Эти каталоги содержат автоматически сгенерированные классы и не должны редактироваться вручную.
Сгенерировать классы позволяют задачи Gradle:
./gradlew generateBuildBotClassesJooq../gradlew generateMaxScaleClassesJooq.
Генерацию необходимо выполнять после изменения схемы базы данных, а так же для нее требуется доступ к базе данных.
Проверка стиля кода
Для проверки соответствия Kotlin-кода принятому стилю используется плагин ktlint.
Основные задачи:
Проверка проекта на соответствие правилам форматирования.
./gradlew ktlintCheck
Автоматическое исправление большинства нарушений форматирования.
./gradlew ktlintFormat
Управление зависимостями
Gradle также отвечает за:
- загрузку внешних библиотек;
- управление версиями зависимостей;
- настройку плагинов проекта;
- конфигурацию задач сборки.
Для добавления новой зависимости нужно:
- Найти нужную библиотеку в Maven Central Repository.
- Выбрать нужную версию библиотеки (можно ориентироваться на текст для Gradle).
- Описать зависимость в файле
buildbot-dashboards/gradle/libs.versions.toml. - Добавить зависимость в файл
buildbot-dashboards/build.gradle.kts. - (Опционально) Если это клиентская зависимость проекта WebJars, нужно добавить ее компоненты (css и js) в общий шаблон
resources/.../models/Layout.peb
Пример jobRunr:
// на сайте для Gradle
implementation("org.jobrunr:jobrunr:8.5.1")
// в libs.versions.toml
[versions]
jobRunr = "8.5.1"
[libraries]
jobRunr = { module = "org.jobrunr:jobrunr", version.ref = "jobRunr"}
// в build.gradle.kts
dependencies {
implementation(libs.jobRunr)
}