Gradle 学习总结—— Gradle 之于 Maven 有何优势
Posted 科技D人生
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gradle 学习总结—— Gradle 之于 Maven 有何优势相关的知识,希望对你有一定的参考价值。
前言
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,Gradlev使用基于 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 的优势。我提出下面的建议:新项目尝试使用 Gradle 来构建;尝试迁移 Maven 的老项目将其使用 Gradle 构建。
以上是关于Gradle 学习总结—— Gradle 之于 Maven 有何优势的主要内容,如果未能解决你的问题,请参考以下文章
Gradle 学习总结—— 如何将 Spring Boot 构建工具从 Maven 迁移到 Gradle