Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Автоматизация сборки приложения

В приложении используется система сборки 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 также отвечает за:

  • загрузку внешних библиотек;
  • управление версиями зависимостей;
  • настройку плагинов проекта;
  • конфигурацию задач сборки.

Для добавления новой зависимости нужно:

  1. Найти нужную библиотеку в Maven Central Repository.
  2. Выбрать нужную версию библиотеки (можно ориентироваться на текст для Gradle).
  3. Описать зависимость в файле buildbot-dashboards/gradle/libs.versions.toml.
  4. Добавить зависимость в файл buildbot-dashboards/build.gradle.kts.
  5. (Опционально) Если это клиентская зависимость проекта 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)
}