Taverna /dev/All

Por que o Gradle ainda não enterrou o Maven?

O Gradle este ano completa 12 anos e, apesar de ter se tornado a ferramenta de build adotada no desenvolvimento Android, no mundo Java ainda não superou em adoção o Maven.

image

É curioso isto, por que de um lado temos uma solução baseada em uma notação bastante arcaica (e eu diria que inclusive difícil pra principiantes) que é o XML, e do outro temos Groovy por baixo dos panos.

Alguns poderiam dizer que é a grande quantidade de repositórios que foi criada para se gerenciar dependências, mas mesmo assim, o Gradle tira proveito deste importante recurso, o que não justificaria esta não dominância.

Ainda mais interessante: de um lado temos uma solução declarativa (Maven), enquanto do outro uma que nos permite ter um controle bem mais fino sobre o nosso processo de build com a inclusão de scripts (Gradle) o que, em teoria, facilitaria a adoção por aqueles que estão começando.

Hoje por curiosidade resolvi fazer uma busca no Google Trends comparando os dois tópicos - Maven e Gradle - e tive uma surpresa. Seguem os resutlados:

De 1/1/2007, quando o Gradle foi lançado, até hoje, comparando com Maven, nos EUA:

https://trends.google.com/trends/explore?date=2007-01-01%202019-01-22&geo=US&q=gradle,maven

Agora, o mesmo resultado para o Brasil:

https://trends.google.com/trends/explore?date=2007-01-01%202019-01-22&geo=BR&q=gradle,maven

Talvez esta não seja a melhor métrica ou mesmo a minha busca no trends esteja incorreta, mas acredito que dá pra mostrar a ideia.

Então pergunto aqui: na opinião de vocês, o que impede que o Gradle enterre o Maven?

acho o maven mais fácil de usar que o gradle.

onde passei os projetos q tinham gradle eram os mais problemáticos para dar o build com problemas de versões do gradle e afins.

tenho exatamente a mesma experiência. Sempre com Maven foi mais fácil, mas aí não sei se é uma facilidade intrínseca do Maven ou se é uma resistência minha.

Mas a questão da versão do Gradle, é fácil de resolver, eles incluem aquele script “gradlew” no projeto, então nem precisa instalar ele pra rodar.

nem esse gradlew resolvia as vezes, tinha gente q fazia o favor de trocar a versão e comitar sem funcionar

Desde que comecei com Java eu usei o gradle, principalmente pela task de buildar Jar. Sinceramente, usando IntelliJ, não faço ideia de como gerar um Jar sem o Gradle.

legal, mas na sua opinião, por que o Gradle ainda não suplantou o Maven?

Não sei. Eu acredito por costume, mesmo. Também tem o fato que o Gradle tem uma sintaxe bem característica, as vezes n se acostuma a usar ele justamente por “ser diferente”. Sei lá, sinceramente. Para mim sempre pareceu mais fácil configurar um build.gradle do que um pom.xml. Xml não me atrai muito.

Eu realmente não entendo o porque do Gradle não ter “enterrado” o Maven ainda, mas acredito que tudo vai depender de qual você aprender primeiro, nós programador Java temos mania de achar o diferente sempre mais difícil. Sempre trabalhei com Maven, fui para uma nova empresa que só usa Gradle e achava difícil e chato, depois fui aprendendo e hoje acho mais fácil fazer build e task com gradle do que com o Maven.

1 Curtida

Não sei se estou sendo simplista, mas acho que é pelo comodismo junto com o fato que, apesar dos problemas do maven, como usar xml, ele funciona. Ao mexer com o Gradle tive a mesma sensação do matheus.lubarino1.

IMHO: por sua importância histórica na gestão de dependências com repositório central, a base legada de sistemas utilizando Maven é enorme. Isso pesa muito. Sem falar na quantidade de plugins que foram criados e amadurecidos e estão no coração de jobs de integração contínua por aí. Essas tecnologias estruturantes que conseguem algum pioneirismo e possuem uma arquitetura de plugins da comunidade sempre geram esse fenômeno (ex: Eclipse). Então sei lá… Não fosse pela questão estética, não creio que o Maven apresente alguma deficiência funcional gritante que motive a migração massiva e natural para algo novo que viesse a suprir uma possível lacuna. No próprio site do Gradle, a comparação com Maven é bem oblíqua (https://gradle.org/maven-vs-gradle/).

2 Curtidas

No meu caso eu tenho preferência pelo Maven devido a facilidade de uso, minha experiência com Gradle não foi das melhores no passado.

Na minha opinião, entre usar um que você sabe e aprender um. Se os dois resolvem seu problema você fica com o que você sabe.

É a inércia. Eu mesmo já tentei aprender Gradle, mas nunca me dediquei muito. Fica na pilha

1 Curtida

Desenterrando esse tópico só porque tivemos uma conversa num grupo de amigos de TI e foi destacado por um colega que uma das justificativas do Gradle estar aí é que eles focam em otimizar o tempo de build por meio de estratégias de cache e builds incrementais, e a versão comercial gera informações analíticas que ajudam o desenvolvedor a otimizar ainda mais o build. Dêem uma rolada nessa página até o final e vejam os cases, testimonials e lista de clientes: Customers | Gradle Enterprise

1 Curtida

itexto