Skip to content
Latchkey

O Que É o Gradle? A Ferramenta de Build Flexível para JVM Explicada

O Gradle é uma ferramenta de build flexível para projetos JVM e Android que modela builds como um grafo de tarefas e faz cache dos resultados para rebuilds rápidos e incrementais.

O Gradle combina convenção com um build programável, usando scripts Groovy ou Kotlin para descrever como um projeto é construído. É o padrão para Android e uma alternativa popular ao Maven graças a builds incrementais e um poderoso sistema de caching.

O que é o Gradle

O Gradle é uma ferramenta de automação de build para linguagens JVM (Java, Kotlin, Scala), Android e além. Os builds são definidos em build.gradle (Groovy) ou build.gradle.kts (Kotlin), declarando plugins, dependências e tarefas. Ele busca dependências de repositórios compatíveis com o Maven.

Grafo de tarefas e build cache

O Gradle modela um build como um grafo direcionado de tarefas. Ele rastreia inputs e outputs, então tarefas inalteradas são puladas (builds incrementais) e outputs computados anteriormente podem ser reutilizados de um build cache local ou remoto. Um daemon Gradle de vida longa mantém a JVM aquecida entre invocações, acelerando ainda mais builds repetidos.

Um exemplo de uso

O script wrapper fixa a versão do Gradle por projeto.

Common Gradle commands
# build and test using the project-pinned wrapper
./gradlew build

# run a specific task
./gradlew :app:assembleRelease

Papel no CI/CD

No CI, "./gradlew build" compila, testa e monta os artefatos. Usar o wrapper garante a mesma versão do Gradle em todos os lugares. O build cache e o cache de dependências são as grandes alavancas de CI: um Gradle cache aquecido pode transformar um build de vários minutos em segundos. Como o daemon e os caches se beneficiam da persistência, esses builds rodam visivelmente mais rápido em runners gerenciados com caches aquecidos e auto-retry em downloads instáveis.

Alternativas

O Maven oferece um modelo mais rígido e orientado por convenção que alguns times preferem pela previsibilidade. O Bazel escala para monorepos poliglotas enormes com hermeticidade estrita. O Gradle é favorecido onde a flexibilidade de build, a incrementalidade e o caching importam, e é o padrão para Android.

Principais conclusões

  • O Gradle modela builds como um grafo de tarefas em cache e incremental.
  • O build cache e o daemon tornam builds repetidos muito mais rápidos.
  • Use o wrapper (./gradlew) para que CI e local usem a mesma versão do Gradle.

Guias relacionados