Skip to content
Latchkey

Maven Wrapper vs Gradle Wrapper: builds JVM reproduzíveis no CI

Estas não são build tools rivais - são wrappers que fixam Maven ou Gradle em uma versão exata para que builds de CI correspondam aos locais.

O Maven Wrapper (mvnw) e o Gradle Wrapper (gradlew) são scripts commitados no repo que baixam e rodam uma versão fixada de Maven ou Gradle. Eles resolvem o mesmo problema - reprodutibilidade de versão - para suas respectivas build tools.

Maven Wrapper (mvnw)Gradle Wrapper (gradlew)
FixaVersão do MavenVersão do Gradle
Arquivos commitados.mvn/wrapper + mvnwgradle/wrapper + gradlew
Comando de CI./mvnw ..../gradlew ...
BenefícioNão precisa de Maven pré-instaladoNão precisa de Gradle pré-instalado
MaturidadePadrão (mais novo que gradlew)Padrão de longa data

No CI

Use o wrapper para qualquer build tool que você já usa: ./gradlew ou ./mvnw roda a versão exata fixada do repo, então o CI não depende de qualquer Maven/Gradle que esteja pré-instalado no runner. O Gradle Wrapper tem sido o padrão de fato por anos; o Maven Wrapper traz a mesma garantia para projetos Maven. Eles são complementares à sua escolha de build tool, não alternativas um ao outro.

Faça cache e fixe

Comite os arquivos do wrapper, rode via ./mvnw ou ./gradlew no CI e faça cache de ~/.m2 ou ~/.gradle com chave nos seus arquivos de build. O build roda em runners de CI; runners gerenciados mais rápidos encurtam builds JVM pesados em um cache miss.

O veredito

Em Maven: use o Maven Wrapper (mvnw); em Gradle: use o Gradle Wrapper (gradlew). Eles fixam a versão da build tool para um CI reproduzível - não é uma escolha entre Maven e Gradle, mas um wrapper para qualquer um que você use.

Guias relacionados