Рекомендации по работе с Gradle
Gradle — система сборки, используемая многими проектами Kotlin для автоматизации и управления процессом сборки.
Чтобы тратить меньше времени на управление сборками и ожидание их завершения и больше времени на написание кода, важно максимально эффективно использовать Gradle. Здесь мы приводим набор рекомендаций в двух ключевых областях: организация проектов и оптимизация их работы.
Организация
В этом разделе рассматривается структура проектов Gradle, которая помогает повысить их ясность, удобство сопровождения и масштабируемость.
Используйте Kotlin DSL
Используйте Kotlin DSL вместо традиционного Groovy DSL. Так вам не придется изучать еще один язык, а строгая типизация даст вам дополнительные преимущества. Благодаря строгой типизации IDE лучше поддерживают рефакторинг и автодополнение, что повышает эффективность разработки.
Дополнительную информацию можно найти в кратком руководстве Gradle по Kotlin DSL.
Прочитайте статью в блоге Gradle о том, что Kotlin DSL стал стандартом для новых сборок Gradle.
Используйте каталог версий
Используйте каталог версий в файле libs.versions.toml для централизованного управления зависимостями. Это позволит единообразно задавать и повторно использовать версии, библиотеки и плагины в разных проектах.
[versions]
kotlinxCoroutines = "1.11.0"
[libraries]
kotlinxCoroutines = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlinxCoroutines" }
Добавьте следующую зависимость в файл build.gradle.kts:
dependencies {
implementation(libs.kotlinxCoroutines)
}
Подробнее см. в документации Gradle: Основы управления зависимостями.
Используйте плагины соглашений
Используйте плагины соглашений, чтобы инкапсулировать и повторно использовать общую логику сборки в нескольких файлах сборки. Перенос общей конфигурации в плагин помогает упростить и модульно организовать скрипты сборки.
Первоначальная настройка может занять время, но после ее завершения поддерживать и расширять логику сборки будет легко.
Подробнее см. в документации Gradle: Плагины соглашений.
Оптимизация
В этом разделе описаны способы повысить производительность и эффективность сборок Gradle.
Используйте локальный кэш сборки
Используйте локальный кэш сборки, чтобы экономить время, повторно используя результаты других сборок. Кэш сборки может получать результаты любой ранее выполненной вами сборки.
Подробнее см. в документации Gradle о кэше сборки.
Используйте кэш конфигурации
Используйте кэш конфигурации, чтобы значительно повысить производительность сборки: кэшируйте результат этапа конфигурации и повторно используйте его при последующих сборках. Если Gradle обнаружит, что конфигурация сборки и связанные с ней зависимости не изменились, он пропустит этап конфигурации.
Кэш конфигурации также позволяет параллельно выполнять независимые задачи в рамках одного проекта, что может дополнительно повысить производительность сборки. Кроме того, он неявно включает свойство org.gradle.parallel, позволяя задачам из разных проектов выполняться параллельно.
Подробнее о кэше конфигурации читайте в документации Gradle.
Сократите время сборки для нескольких целей
Если ваш мультиплатформенный проект включает несколько целей, такие задачи, как build и assemble, могут компилировать один и тот же код для каждой цели, увеличивая время компиляции.
Если вы активно разрабатываете и тестируете конкретную платформу, вместо этого запускайте соответствующую задачу linkDebug*.
Дополнительную информацию см. в разделе Советы по сокращению времени компиляции.
Перейдите с kapt на KSP
Если вы используете библиотеку, зависящую от плагина компилятора kapt, проверьте, можно ли вместо него использовать API обработки символов Kotlin (KSP). API KSP повышает производительность сборки за счет сокращения времени обработки аннотаций. KSP работает быстрее и эффективнее kapt, поскольку обрабатывает исходный код напрямую, не создавая промежуточные заглушки Java.
Инструкции по переходу см. в руководстве по миграции.
Используйте модульную структуру
Используйте модульную структуру проекта, чтобы ускорить сборку и упростить параллельную разработку. Разделите проект на один корневой проект и один или несколько подпроектов. Если изменения затрагивают только один из подпроектов, Gradle пересоберет только его.
.
└── root-project/
├── settings.gradle.kts
├── app subproject/
│ └── build.gradle.kts
└── lib subproject/
└── build.gradle.kts
Подробнее см. в документации Gradle: Структурирование проектов с помощью Gradle.
Настройте CI/CD
Настройте процесс CI/CD, чтобы значительно сократить время сборки благодаря инкрементальным сборкам и кэшированию зависимостей. Для этого используйте постоянное хранилище или удаленный кэш сборки. Настройка не обязательно займет много времени: некоторые поставщики, например GitHub, предлагают эту услугу практически из коробки.
Изучите сборник рецептов сообщества Gradle о том, как использовать Gradle с системами непрерывной интеграции.
Используйте удаленный кэш сборки
Как и локальный кэш сборки, удаленный кэш помогает экономить время за счет повторного использования результатов других сборок. Он может получать результаты задач из любой ранее запущенной кем-либо сборки, а не только из последней.
Удаленный кэш сборки использует сервер кэширования для обмена результатами задач между сборками. Например, в среде разработки с сервером CI/CD все сборки на сервере пополняют удаленный кэш. Когда вы переключаетесь на основную ветку, чтобы начать работу над новой функцией, инкрементальные сборки становятся доступны сразу.
Помните, что при медленном интернет-соединении передача кэшированных результатов может занять больше времени, чем локальное выполнение задач.
Подробнее см. в документации Gradle о кэше сборки.
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/gradle-best-practices.html