O Que É o Maven? A Ferramenta de Build e Dependências Java Explicada
O Maven é uma ferramenta de build e gerenciamento de dependências para Java que usa um arquivo de projeto declarativo (o POM) e um ciclo de vida de build padrão.
O Maven trouxe a convenção sobre configuração para os builds Java. Você descreve um projeto em um pom.xml, e o Maven sabe como compilar, testar, empacotar e fazer deploy dele por meio de um ciclo de vida fixo, puxando dependências de repositórios centrais automaticamente.
O que é o Maven
O Maven é uma ferramenta de automação de build e gerenciamento de dependências principalmente para Java e outras linguagens JVM. Seu artefato central é o Project Object Model (pom.xml), que declara as coordenadas do projeto, dependências, plugins e configurações de build. As dependências são buscadas de repositórios como o Maven Central.
O POM e o ciclo de vida
O Maven define um ciclo de vida de build padrão com fases ordenadas: validate, compile, test, package, verify, install e deploy. Rodar uma fase executa todas as fases anteriores a ela. Plugins vinculam goals a fases, então "mvn package" compila, testa e constrói um JAR ou WAR. O POM e as convenções fazem com que a maioria dos projetos precise de muito pouca configuração personalizada.
Um exemplo de uso
A maioria dos builds de CI é uma única invocação de fase.
# compile, run tests, and build the artifact
mvn -B clean package
# skip tests when you only need the build
mvn -B package -DskipTestsPapel no CI/CD
Em pipelines, "mvn clean package" ou "mvn verify" compila, testa e empacota o projeto, falhando o job em qualquer erro. A flag "-B" (batch) suprime a saída interativa para logs de CI limpos. Fazer cache do repositório Maven local (~/.m2) entre execuções evita rebaixar dependências, que é uma das maiores economias de tempo para CI de JVM. Builds Maven mais pesados e fases de teste rodam mais rápido em runners gerenciados com um cache de dependências aquecido.
Alternativas
O Gradle é a principal alternativa, oferecendo um build flexível e scriptável com compilação incremental e um build cache que costuma ser mais rápido. O Bazel mira monorepos poliglotas muito grandes. O Maven continua popular por sua estabilidade, previsibilidade e vasto ecossistema de plugins.
Principais conclusões
- O Maven faz o build de projetos JVM a partir de um pom.xml declarativo.
- Um ciclo de vida fixo (compile, test, package, deploy) conduz o build.
- Faça cache do repositório ~/.m2 no CI para evitar rebaixar dependências.