Gradle与Maven比较

以下从灵活性性能用户体验依赖管理几个方面对Gradle和Maven进行比较,更多详细内容可以访问Gradle功能列表Gradle与Maven的性能对比

gradle-vs-maven

该图展示了分别使用Gradle和Maven构建Apache Commons Lang library的情况,可以查看这里了解Gradle的构建详情。

灵活性

谷歌选择Gradle作为Android官方构建工具,不是因为它的构建脚本是groovy代码,而是因为Gradle是以一种最基本的可扩展的方式建模的。Gradle的模型还允许使用C/C++进行本地开发,并且可以扩展到其他生态系统,例如,Gradle的设计考虑了使用它的Tooling API进行嵌入。

Gradle和Maven都提供了约定优于配置的概念,然而,Maven提供了一个非常严格的模型,使得定制变得乏味,有时甚至变得不可能,尽管这让你更容易理解任何给定的构建,但只要你没有任何特别的要求,它也不适合处理许多自动化问题。另一方面,Gradle是在充分授权和负责任的用户基础上构建的。

性能

image.png

减少构建时间是加快交付速度最直接的方式之一。Gradle和Maven都采用某种形式的并行项目构建和依赖解析,最大的区别在于Gradle的工作回避与增量机制。Gradle比Maven快的最主要的三个特性:

  • 增量工作方式。Gradle通过跟踪任务的输入输出来避免不必要的工作,并且只处理可能被更改的文件;
  • 构建缓存。对于具有相同输入的构建,可以复用其他构建的输出,即使是在不同的机器上;
  • Gradle的守护进程。在内存中长期驻守一个进程来保持热点构建信息。
    Gradle与Maven的性能对比中,以上这些以及其他一些特性使得Gradle几乎在每个场景中都性能都要高一倍,对于使用的构建缓存的大型构建,性能甚至要高100倍。

用户体验

image.png

Maven由于对IDE的友好支持,使得其在用户中有广泛的使用。但是,Gradle也在不断完善对各种IDE的支持,例如,Gradle有基于Kotlin的DSL,提供了更好的IDE体验。Gradle团队正在与IDE开发商合作,以提供更好的编辑支持,请关注这里

尽管IDE很重要,仍然有很多用户喜欢使用命令行来构建,Gradle提供了一个现代的命令行工具,它具有可发现功能,如‘gradle tasks’,以及改进的日志记录和命令补全功能。

最后,Gradle提供了一个可交互的web UI(build scans),用于调试和优化构建。这些也可以在内部托管,以允许团队收集构建历史,分析构建趋势,比较构建进行调试和优化构建时间。

image.png

依赖管理

Gradle和Maven都内建了从配置仓库解析依赖关系的功能,都能将依赖项缓存到本地并且可以并行下载。

作为库消费者,Maven允许覆盖依赖项,但只能根据依赖项的版本来覆盖。Gradle提供了可自定义的选择和替换规则,这意味着,我们在项目中只需要声明一次就可以全局排除不想要的依赖项,这种机制使得Gradle可以完成包含多个项目的复合构建。

Maven几乎没有内置的依赖范围管理,这使得在测试或生成代码等常见场景中的模块结构不够友好,比如,单元测试和继承测试之间没有分离。Gradle支持自定义依赖范围,这提供了更好的模块结构和更快的构建。

作为库生产者,Gradle允许生产者声明“api”和“implementation”之间的依赖关系,以避免不需要的库泄漏到消费者的classpath中。Maven则是允许发布者通过可选的依赖项提供元数据。

下一步做什么

建议进一步了解Gradle的功能,或者从以下这些主题开始:

原文链接
https://gradle.org/maven-vs-gradle/

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342

推荐阅读更多精彩内容

  • 1.介绍 如果你正在查阅build.gradle文件的所有可选项,请点击这里进行查阅:DSL参考 1.1新构建系统...
    Chuckiefan阅读 12,111评论 8 72
  • 原文地址 作为Android开发你必须明白的Gradle基础 作为一个Android开发程序员,如果你的build...
    Android_冯星阅读 669评论 0 1
  • 构建工具的诞生帮我们省去了不少的事情,随着Maven的出现,确实使我们眼前一亮,maven优化了上一代ant的复杂...
    Tim在路上阅读 930评论 0 0
  • ……深夜不寐,手不释卷。深邃的眼神,深情的追问,深广的关怀,“无穷的远方,无数的人们”,与我息息相关。这...
    教育谭阅读 292评论 0 3
  • 你迄今为止最接近死亡是在什么时候?我不知道你的答案,当我看到爷爷的眼睛散尽最后一丝光芒的时候,我知道,这就是我目前...
    优雅s阅读 337评论 0 4