Maven e Gradle
Ferramentas de automação de build
Aplicações precisam de ferramentas de automação de build para auxiliar em tarefas como compilação do código, empacotamento do projeto, gerenciamento de dependências e execução de testes. Em Java, atualmente duas dessas ferramentas são bem populares: Maven e Gradle.
Maven
Um arquivo pom.xml é o responsável por agrupar as configurações necessárias para o build da aplicação. Maven foi criado para resolver os problemas de uma antiga ferramenta, o Ant (forma como os australopithecus gerenciavam build em Java), padronizando os builds.
É possível criar e incoporar plugins em arquivos Maven, como por exemplo, plugins para subir a aplicação através da linha de comando, sem a necessidade de abrir a IDE para isso. O plugin permite colocar a aplicação de pé executando `mvn spring-boot:run`.
Maven é capaz de empacotar a aplicação em diversos formatos, como jar, war, gerar documentação e é suportado pela maioria das IDEs conhecidas no mundo Java.
Gradle
É modernização do Maven, possui todas as funcionalidades necessárias do Maven e seu uso não se limita a projetos baseados em JVM.
O arquivo o build.gradle geralmente é responsável pelas configurações e usa Groovy DSL (domain-specific language), o que o torna mais enxuto e fácil de ler do que o XML. (Vamos ser sinceres, quem gosta de XML?)
Comparação entre as mesmas configurações escritas para Maven e Gradle, retiradas da documentação do Gradle:
Pela forma como gerencia as tarefas e por usar um cache para o build, o Gradle se diz 100x mais rápido que Maven:
https://gradle.org/gradle-vs-maven-performance/
Então devo usar Gradle? Depende!😬
Apesar de Gradle ser mais rápido e menos verboso, o Maven é mais conhecido, então usar o Gradle pode precisar de investimento em tempo para aprendizado.
O Maven não é ruim e faz o trabalho, então cabe julgar se vale investir esse tempo.
Em projetos existentes, existe também o custo de migração de Maven para Gradle, o que talvez não faz sentido, se os projetos forem pequenos. Já para projetos novos onde há espaço para testar novas ferramentas, considerar Gradle é uma boa opção.
O Otavio complementa com a dica do Maven Daemon:
Uma dica para projetos grandes que usam Maven é testar o Maven Daemon. Ele é um sub-projeto do Apache Maven que paraleliza os builds. Pra efeito de comparação: buildar o Apache Camel com o Maven leva uns 45 minutos e com o Maven Daemon leva 9.