Сборка Kotlin приложений с использованием Gradle
#
Васильев Андрей Михайлович, 2024
Версии презентации
Назначение системы сборки
#
Системы сборки появились в тот момент, когда разработчикам перестало хватать
одного файла для создания приложения
Для компиляции приложения на Си из двух исходных файлов необходимо выполнить 3
действия: две компиляции и одно связывание
Сборка Java-приложений
#
Система сборки обычно работает вместе со средствами компиляции
- Компилятор языка Java,
javac
, входит в состав JDK
- Распространённые системы сборки:
- Apache Maven — расширяемая система сборки с конфигурацией на языке XML
- Gradle — система сборки с конфигурацией на языках Kotlin или Groovy
- sbt — система сборки приложений, написанных на языке Scala
- Apache Ant — система сборки с конфигурацией на языке XML
В рамках курса будем использовать Gradle с написанием конфигурации на языке
Kotlin
Процесс сборки Kotlin-приложения
#
На платформе JVM сборка Kotlin-приложения схожа с классической компиляцией:
Компилятор языка Kotlin не поставляется вместе с JDK, его необходимо
дополнительно скачать и иметь в доступе в момент сборки приложения
Хорошая новость — разработчики Kotlin предоставляют инструменты, урпощающие
использование в популярных системах сборки: Gradle, Maven и Ant
Расширенная процедура компиляции
#
- Пользователь запускает систему сборки с задачей по сборке приложения
- Система сборки загружает конфигурационный файл
- Система сборки загружает расширения, указанные в конфигурационном файле
- Система сборки загружает внешние библиотеки, от которых зависит приложение
- Система сборки выполняет действия по компиляции и сборке приложения
Детали работы Gradle
#
Структура проекта должна следовать стандарту
project
├── gradle
│ ├── libs.versions.toml
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle(.kts)
├── subproject-a
│ ├── build.gradle(.kts)
│ └── src
└── subproject-b
├── build.gradle(.kts)
└── src
- В коре проекта находится файл
settings.gradle(.kts)
- Скрипты
gradlew
и gradlew.bat
облегчают установку gradle
- Каталог
gradle
содержит информацию по доп. настройке
- Файл
libs.versions.toml
содержит список стандартных зависимостей
- Каталоги
subproject-a
и subproject-b
содержит вложенные проекты
- Файлы
subproject-a/build.gradle(.kts)
содержит конфигурацию проекта
Логическая модель Gradle
#
С точки зрения пользователя Gradle предоставляет возможность запустить одну или
несколько задач
- Каждая задача зависит от других задач и файлов на файловой системе
- Обычно результатом работы задачи является файл на файловой системе
- Система сборки пытается оптимизировать количество действий, чтобы ускорить
выполнение задач
Среды разработки с поддержкой IDEA
#
- Основным средством взаимодействия с Gradle выступает командный интерфейс
- Среды разработки предоставляют средства интеграции
Будем рассматривать интеграцию с IDEA
Структура проекта Gradle с поддержкой Kotlin
#
KotlinProject
├── .gradle/
├── build/
├── build.gradle.kts
└── src
├── main
│ ├── kotlin
│ │ └── Main.kt
│ └── resources
└── test
├── kotlin
└── resources
- В корне проекта находится файл
build.gradle.kts
- Каталог
src/main/kotlin
содержит исходные коды на языке Kotlin
- Каталог
src/main/resources
содержит файлы-ресурсы, не подвергающиеся
компиляции
- В каталоге
kotlin
можно и нужно создавать иерархическую структуру
каталогов, соответствующую пакетам языка Kotlin
- Каталог
build
содержит результаты сборки и не должен сохраняться в системе
контроля версий
- Каталог
.gradle
содержит кеш для ускорения работы системы сборки