Gradle大战Maven,胜负已分?

开发 开发工具
Maven和Gradle都属于“构建工具”,都是用来自动化工作,并把我们的源码编译成我们要发布的构件而存在。

"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"我不明白为什么人们害怕新想法。 我害怕那些旧的。" - 约翰凯奇。

勇敢迈出舒适区,去冒险吧!

文章出自:​​爱科学的卫斯理​​,如有转载本文请联系爱科学的卫斯理今日头条号。

责任编辑:武晓燕 来源: 今日头条
相关推荐

2019-01-15 13:06:24

支付宝微信支付银联

2013-08-01 13:41:16

HTML5App

2024-08-30 08:51:17

MavenGradleJava

2015-01-26 09:57:47

GradleMaven Centr

2022-12-05 08:55:39

MavenGradle项目

2022-09-01 11:48:45

JavaScript框架

2023-10-07 14:15:03

软件开发GradleMaven

2012-09-07 10:09:54

MySQLMongoDB云计算

2020-06-30 14:25:28

MavenGradle Spring

2017-02-27 08:37:01

2020-06-23 16:05:07

GradleMavenJava

2022-11-01 08:55:55

编译工具MavenSpring

2016-02-24 10:45:00

2017-06-09 11:20:47

高考AI教育

2022-01-17 07:50:36

Maven Gradle 工具

2013-02-21 13:18:32

2013-09-09 18:21:14

2017-02-08 10:30:12

大数据架构Hadoop

2011-12-05 09:46:34

IDC云计算移动

2014-06-05 15:26:42

点赞
收藏

51CTO技术栈公众号