Gradle VS Maven

举报
Jet Ding 发表于 2020/09/29 11:25:55 2020/09/29
【摘要】 选择什么主要取决于你的需求,Gradle的功能更强大,Maven最适合小项目,而Gradle最适合大项目。

Gradle作为开源的自动化构建系统,使用基于编程语言Groovy的特定领域语言。

2007年首次发布,2013年,GradleGoogle采用为Android项目的构建系统。

Gradle支持多项目构建。

Gradle支持允许增量构建,能够检测哪些部分是更新的。

Maven也是开源的自动化构建系统,使用XML文件来描述构建的项目、软件与第三方模块和部件的依赖关系、构建顺序以及所需的插件。包装和编译等任务都有预定义的目标。

Maven会从不同的仓库中下载库和插件,然后将它们全部放在本地机器的缓存中。 虽然主要用于Java项目,也可以将其用于ScalaRubyC#,以及其他许多语言。

GRADLE

MAVEN

Gradle是基于任务依赖的。

Maven是基于固定的、线性的阶段模型,目标被附加在项目阶段上,而目标的功能与Gradle的任务类似。

GradleMaven都支持并行构建

Gradle支持增量构建,可以大大缩减构建时间。

其他构建特性:

1.         Java类的增量编译

2.         避免不必要的Java编译

3.         递增式子任务的API使用

4.         编译器守护进程,也让编译速度快了很多。

Maven不支持增量构建

GradleMaven都可以处理动态和转义的依赖关系,使用第三方依赖缓存,并读取POM元数据格式。

可以通过中心版本定义来声明库的版本,并强制执行中心版本。

两者都可以从其工件库中下载过渡性依赖MavenMaven Central,而GradleJCenter,你也可以定义自己的私人公司仓库。

GradleAPI和实现依赖性方面胜出,

同时允许并发安全缓存

将仓库元数据与缓存依赖一起保存,确保使用同一缓存的两个或多个项目不会相互覆盖,而且它有一个基于校验的缓存,可以与仓库同步缓存

此外,Gradle兼容IVY Metadata允许你定义自定义规则,为动态依赖指定版本,解决版本冲突

其他只有在Gradle上才能找到的依赖性管理功能有:

在兼容库中使用替换规则

ReplacedBy规则的使用

更好地解决元数据问题

能够动态地用外部依赖关系替换项目依赖关系,反之亦然。

这些在Maven上是无法实现的

Gradle可以比Maven更容易处理复合构建

就执行模型而言,两者都有任务组和描述。两者都能让你只构建指定的项目及其依赖关系。

Gradle有一个完全可配置的DAG

Maven中,一个目标只能附加在一个其他目标上。多个目标采取的是有序列表的形式。

Gradle还允许任务排除、转义排除和任务依赖性推断。

Gradle还有任务排序和最终确定器等高级功能。

Maven没有这些功能

管理构建基础架构方面, Gradle使用接受自动供应的包装器。

Gradle还可以让你配置基于版本的构建环境,而无需手动设置这些环境。它还允许自定义发布。

使用Maven,你需要有一个扩展来支持自供应构建。

 定制化方面, 使用Maven,你可以很容易地定义项目的元数据和依赖关系,但创建一个高度定制的构建可能是Maven用户的噩梦。随着项目的发展,POM文件很容易变得臃肿,以后可能就是一个无法读取的XML文件。

依赖管理和目录结构方面。Maven是提供了简单而有效的依赖管理,由于它为你的项目提供了一个目录结构,所以你的所有项目都有某种标准的布局。它的POM文件使用的是声明式的XML文件,并且有大量的插件可以使用Gradle使用的是你在Maven上看到的目录结构,但这是可以定制的。它还使用Maven相同的GAV格式来识别工件

插件和集成方面Maven支持多种构建生命周期步骤,并与第三方工具无缝集成,如CI服务器、代码覆盖插件和工件仓库系统等。就插件而言,现在可用的插件越来越多,有大型厂商都有兼容Gradle的插件。不过,Gradle的可用插件数量相比,Maven的可用插件还是比较多的。

灵活性方面Gradle非常灵活,它是基于脚本的。在Gradle上进行自定义构建会很容易。然而,由于Gradle实际上是一个新事物,所以对Gradle了如指掌的开发者数量比较有限。

最后,选择什么主要取决于你的需求Gradle的功能更强大Maven最适合小项目,而Gradle最适合大项目。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。