Introdução: O que são Maven e Gradle e para que servem?
\n\nNo mundo do desenvolvimento Java, existe um problema fundamental: como gerenciar dependências (bibliotecas externas), automatizar a compilação do projeto, executar testes e criar artefatos finais (JAR, WAR)? Baixar arquivos JAR manualmente e configurar o classpath é um caminho sem volta, especialmente para projetos com dezenas de dependências.
\n\nMaven e Gradle são os dois sistemas de automação de build (build automation tools) mais populares para Java. Eles resolvem as seguintes tarefas:
\n- \n
- Gerenciamento de dependências: download automático de bibliotecas de repositórios centrais (Maven Central, Google Maven) e suas dependências transitivas. \n
- Padronização do ciclo de vida: compilação, teste, empacotamento, implantação — tudo é executado com comandos padrão. \n
- Reprodutibilidade de builds: qualquer desenvolvedor pode compilar o projeto com um único comando, tendo apenas o código-fonte e o arquivo de configuração. \n
- Integração com CI/CD: Jenkins, GitLab CI, GitHub Actions executam facilmente builds Maven/Gradle. \n
Maven usa XML (arquivo pom.xml) e um ciclo de vida rigoroso. Gradle usa Groovy ou Kotlin DSL (arquivo build.gradle ou build.gradle.kts), é mais flexível e rápido devido ao build incremental. Neste artigo, abordaremos ambas as ferramentas, mas focaremos no Gradle como uma solução mais moderna.
Instalação do Maven e Gradle
\n\nInstalação do Maven
\nMaven não é instalado via pip ou npm. Ele precisa ser baixado do site oficial ou instalado através do gerenciador de pacotes do sistema operacional.
\n# macOS (Homebrew)\nbrew install maven\n\n# Ubuntu/Debian\nsudo apt-get update\nsudo apt-get install maven\n\n# Windows (Chocolatey)\nchoco install maven\n\n# Verificar instalação\nmvn --version\n\nInstalação do Gradle
\nGradle também é instalado separadamente. Recomenda-se usar o SDKMAN! para gerenciar versões.
\n# Instalar SDKMAN (se ainda não estiver instalado)\ncurl -s "https://get.sdkman.io" | bash\nsource "$HOME/.sdkman/bin/sdkman-init.sh"\n\n# Instalar a versão mais recente do Gradle\nsdk install gradle\n\n# Verificar\ngradle --version\n\n# Alternativamente: baixar de https://gradle.org/releases/ e extrair\n\nInício rápido: Criando um projeto
\n\nCriando um projeto com Maven
\nMaven pode gerar um esqueleto de projeto através de archetypes.
\n# Criar um projeto Java simples\nmvn archetype:generate -DgroupId=com.example -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false\n\n# Entrar na pasta do projeto\ncd my-app\n\n# Compilar o projeto\nmvn clean package\n\n# Executar (se a classe main estiver configurada)\njava -cp target/my-app-1.0-SNAPSHOT.jar com.example.App\n\nCriando um projeto com Gradle
\nGradle usa o comando init para criar um esqueleto.
# Criar pasta e inicializar o projeto\nmkdir my-gradle-app\ncd my-gradle-app\ngradle init\n\n# Escolher: 2: application -> 3: Java -> 1: Groovy DSL -> 2: JUnit Jupiter -> Enter\n\n# Compilar e executar\n./gradlew build\n./gradlew run\n\nApós isso, você terá uma estrutura de projeto com os arquivos build.gradle (ou pom.xml para Maven) e as pastas src/main/java e src/test/java.
Principais métodos/funções (Gradle DSL)
\nVamos analisar as principais construções do Gradle (Groovy DSL). Para Maven, elas são análogas, mas com sintaxe XML.
\n\n1. dependencies { ... }
\nO que faz: Define as dependências do projeto — bibliotecas externas que serão baixadas dos repositórios.
\nParâmetros: Dentro do bloco, são especificadas as configurações (implementation, testImplementation, compileOnly, etc.) e as coordenadas
Também na biblioteca
Filas de tarefas para Rust: visão geral e exemplos de uso
Agendador de Tarefas Swift para iOS/macOS: EventKit e DispatchSource
Filas de Tarefas para JavaScript (Node.js): Bull, Bee-Queue, Kue