Gradle大战Maven,胜负已分?
“I can’t understand why people are frightened of new ideas. I’m frightened of the old ones.” — John Cage
“我不清楚为什么人们害怕新想法。 我害怕那些旧的。” – 约翰凯奇。
勇敢迈出舒服区,去冒险吧!

Gradle渐渐地火了起来,但是大部分人还在使用Maven,本文将对Gradle和Maven进行全面的比较,大家可以据此作为选型比较的依据。
Maven和Gradle都属于“构建工具”,都是用来自动化工作,并把我们的源码编译成我们要发布的构件而存在。
历史
maven初始版本诞生于2004年,Gradle诞生于2008年,Maven诞生时间更早,但二者都拥有悠久的历史,它们都拥有优秀成熟的生态。

maven初始版本诞生于2004年

gradle初始版本诞生于2008年
性能
Gradle引入了 Maven中缺少的几个性能优化,以提高构建性能。这也是Spring、Spring Boot源码使用Gradle替换Maven的主要缘由。
Gradle 构建缓存在本地重用Gradle任务的输出,并在机器之间共享任务输出。 在许多情况下,这将加快平均构建时间。
构建缓存在分支之间切换时也超级有用,由于先前构建的输出被保留并且不必重新创建。 性能节省与上面的缓存构建相当,在测试项目中,Gradle 比 Maven 快 17 到 100 倍。
在小型的多项目编译中,Gradle 在干净构建下速度快 2-3 倍,增量更改速度快 7 倍,缓存 Gradle任务输出时速度快 14 倍。

gradle和maven速度比较
在中型的多项目编译中,Gradle 在干净构建下速度快4-5 倍,增量更改速度快 40 倍,缓存 Gradle任务输出时速度快 13 倍。
在大型大型单体式项目中,Gradle在干净构建下速度快 2-3 倍,增量更改速度快 7 倍,缓存Gradle任务输出时速度快 3 倍。
代码
Maven使用的是基于xml的pom.xml,Gradle使用基于Groovy语言的build.gradle。我们比较一下两个一样功能的Spring Boot程序,分别使用Maven和Gradle的区别。

build.gradle和pom.xml代码行数比较
由图可以看出,一样情况下,build.gradle是33行代码,pom.xml是69行代码。当然这主要的缘由是xml本身就是一门很啰嗦的表意语言。也因此,用xml作为配置、协议也越来越少。
由图也可以看出Gradle比Maven易读性更强且更易维护!
功能
|
功能 |
Maven |
Gradle |
|
构建 |
||
|
编译Java应用 |
有 |
有 |
|
用插件构建其他语言 |
有 |
有 |
|
不用插件构建其他语言 |
无 |
有 |
|
性能 |
||
|
并行编译 |
有 |
有 |
|
增量构建 |
无 |
有 |
|
增量编译 |
无 |
有 |
|
作为守护进程在后台运行 |
无 |
有 |
|
可用性 |
||
|
无需安装 |
否 |
是 |
|
动态控制台 |
无 |
有 |
|
定制 |
||
|
支持多模块 |
有 |
有 |
|
支持第三方插件 |
有 |
有 |
|
支持自定义插件 |
有 |
有 |
|
支持动态构建逻辑 |
无 |
有 |
从表中可以看出,Gradle的功能是比Maven要更丰富的。
流行度
从各类统计数据来看,Maven使用的流行度、市场占有率是有绝对的领先优势的。但是这也不能说明太多的问题,当年的ie、xp系统、诺基亚手机也都是市场的霸主。
个别的统计有显示Gradle有领先的结果,但这不能说明Gradle真正领先。如由OpenLogic发布的《2022年度开源报告显示》:

结论
由上述比较,我们发现Gradle有明显于Maven的优势。我提出下面的提议:
1、新项目尝试使用Gradle来构建!
2、尝试迁移Maven的老项目将其使用Gradle构建。(如:Spring/Spring Boot编译工具从Maven迁移到了Gradle「官网翻译」)
不愿迁移的理由许多:
1、对于Maven很熟悉了,不用迁移到新的工具!
2、又要学习一个新东西,卷不动了!
我觉得无论作为什么样的职业,对新的东西要保持敏锐的感知和学习,不要停留在自己舒服的区域,无论Gradle有没有那么优秀,或者有没有那么多问题,我们要坚持尝试一下。
最后送给大家一句话:
“I can’t understand why people are frightened of new ideas. I’m frightened of the old ones.” — John Cage
“我不清楚为什么人们害怕新想法。 我害怕那些旧的。” – 约翰凯奇。
勇敢迈出舒服区,去冒险吧!






仅剩利用编译过程与旁边小妹谈心的一点时间都被优化掉了,这个工具太没人性了
看讨论是maven胜出了
看讨论的话,也许现在还是struts2呢
gradle用起来超痛苦
转型期的阵痛
为什么要为了一个工具去折腾?有意义?你说换新技术提高性能,我也认,换工具,最多提高打包速度,这有啥鸟用?
你讲的对,绝大部分时候确实没有必要去折腾的,只是每个这些东西总是以我这样的形式潜移默化的。
构建工具 说实话 最重要的并不是速度,敲代码的并不会动不动就去构建项目。 好用易上手稳定才是关键。所以现阶段gradle对比maven没有明显优势
gradle感觉比较恶心,编译spring源码折腾了两天才跑起来
还没带来实际的便利性,仅凭编译快,不够说服程序员折腾
不是列了很多点嘛
gradle天天升级版本,还不兼容,版本稳定再说
像spring boot都使用gradle wrapper,不需要自己管理升级gradle
学不动了,又是maven又是webpack,现在又搞出个gradle。
没事,这个不急,也不重要
gradle这个东西,刚开始用肯定不习惯,但用惯了才知道它到底有多爽,而且是完全回不去的那种。
的确是
我用gradle用得最多的时间就是:换版本,换版本,还是TMD换版本
这么点小的工具,学起来根本不是事,完全取决于项目的安排。
我用sbt
composer最香
上手难
其实也没必要刻意学,用默认的配置就好了
嗯,你说的很对,但是我用maven
就一个破工具,老板让你用哪个就用哪个,有什么好纠结的
说的对
若干年前有人说用一辈子java6, spring annotation不如xml,慢慢也被颠覆了。gradle还是很帅的,随着安卓,spring这样的大主顾迁移,未来是gradle的
明白人
gradle版本兼容很有问题,变化太大,,,而且上手不容易。没maven易懂,groovy绝对没xml简单。跟私服配合是,gradle实在恶心。除了编译快,看不出比maven好在哪里,,纯粹忽悠文章。
拭目以待