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学习总结

gradle学习总结

Gradle 学习总结—— 如何将 Spring Boot 构建工具从 Maven 迁移到 Gradle

Gradle 学习总结—— 如何将 Spring Boot 构建工具从 Maven 迁移到 Gradle

Gradle 任务 -- << 操作符

Gradle学习笔记