Gradle

Тема дорожной карты · Java

Gradle — современный высокопроизводительный инструмент автоматизации сборки для Java и JVM-проектов, использующий DSL Groovy или Kotlin вместо XML, что делает скрипты сборки более выразительными и значительно проще в настройке, чем pom.xml Maven. Инкрементальный движок сборки Gradle отслеживает входные и выходные данные задач и пропускает любую задачу, чьи входные данные не изменились с последней сборки — в сочетании с кэшем сборки, хранящим выходные данные задач удалённо и локально, это делает Gradle значительно быстрее Maven для крупных многомодульных проектов, поэтому он является системой сборки по умолчанию для Android и Spring Boot Initializr. Файл build.gradle.kts (Kotlin DSL) или build.gradle (Groovy DSL) объявляет plugins {}, dependencies {} и пользовательские tasks — плагины java, application, spring-boot и com.google.protobuf являются распространёнными примерами, добавляющими готовые графы задач. Управление зависимостями Gradle использует конфигурации implementation, api, testImplementation и runtimeOnly для контроля видимости и транзитивного раскрытия на compile classpath — более детализированная модель, чем области compile/provided/test Maven. Gradle Wrapper (gradlew / gradlew.bat) гарантирует, что каждый разработчик и CI-конвейер использует точно одну версию Gradle, объявленную в gradle/wrapper/gradle-wrapper.properties, устраняя проблему «работает у меня».

Как это работает

Gradle — это Maven (самый популярный, XML-based pom.xml) или Gradle (Groovy/Kotlin DSL, быстрее, гибче). Оба управляют зависимостями (Maven Central — канонический репо), компилируют, гонят тесты, пакетируют JAR / WAR, публикуют в репо. Wrapper-скрипты (mvnw, gradlew) обеспечивают использование запинненной версии. Multi-module проекты + Bill of Materials (BOM) — для выравнивания версий между модулями.

Когда применять

Maven — если команда ценит конвенцию + стабильность; Gradle — для больших multi-module сборок, где Maven медленный. Всегда wrapper (mvnw / gradlew); не полагайтесь на глобальный Maven/Gradle. Пиннинг версий; dependency-check / OWASP-плагин — для выявления CVE. mvn dependency:tree / gradle dependencies периодически — для замечания дрейфа версий.

Типичные ошибки

Ловушки Gradle: SNAPSHOT-зависимости в production (невоспроизводимые сборки); не закоммичен wrapper (mvnw/gradlew) — новые инженеры видят несовпадение версий; transitive-конфликты (mvn dependency:tree показывает); долгие Gradle-сборки без configuration cache + build cache (gradle 7+).

Связанные понятия

Полезные ресурсы