Gradle与Maven比较——官方版
作者:互联网
目录
- 1.灵活性
- 2.性能
- 3.用户体验
- 4.依赖性管理
- 5.总结
1.灵活性
(1)Google选择Gradle作为Android官方构建工具不是因为构建脚本是代码,而是因为Gradle是以最基本的方式可扩展的方式建模的。格拉德尔的模型也允许用于C/C++的本地开发可以扩展到任何生态系统。例如,Gradle在设计时考虑到了使用它的工具API。
(2)Gradle和Maven都提供对配置的约定。然而,Maven提供了一个非常严格的模型,使得定制变得繁琐,有时甚至不可能。虽然这可以使您更容易理解任何给定的Maven构建,但只要您没有任何特殊需求,它也不适合于许多自动化问题。另一方面,Gradle构建时考虑到了一个授权和负责任的用户。
2.性能
提高构建时间是最直接的方法之一船速。Gradle和Maven都使用某种形式的并行项目构建和并行依赖解决方案。最大的区别是Gradle的工作回避机制和增量机制。使Gradle比Maven快得多的前3项功能如下:
(1)累进-Gradle通过跟踪任务的输入和输出来避免工作,只运行所需的内容,并且只进行处理更改的文件如果可能的话。
(2)构建缓存-使用相同的输入,包括机器之间的输入,重复使用任何其他级别构建的生成输出。
(3)Gradle Daemon-一个长期存在的过程,使构建信息在内存中保持“热”。
这些和更多性能特征对于几乎每个场景,使Gradle至少快一倍(对于使用构建缓存的大型构建来说,速度要快100倍)。Gradle与Maven性能比较.
注:Gradle和Maven用户都可以利用Gradle Enterprise中可用的BuildCache技术。Gradle用户通常会经历大约50%的额外构建时间减少,而Maven用户通常会经历90%的减少。看这个视频要了解更多关于Gradle EnterpriseMaven构建缓存技术和业务用例的信息。
3.用户体验
(1)Maven的任期较长,这意味着它通过IDE提供的支持对许多用户来说更好。然而,Gradle的IDE支持继续快速改进。例如,Gradle现在有一个基于Kotlin的DSL这提供了更好的IDE体验。Gradle团队正在与IDE制造商合作,以使编辑支持更好-继续关注了解最新情况。
(2)虽然IDE很重要,但许多用户更喜欢通过命令行界面执行构建操作。Gradle提供了一个现代的CLI,它具有诸如“等级任务”这样的可发现特性,以及改进的日志记录和命令行完成。
(3)Gradle提供了一个交互式的基于web的UI,用于调试和优化构建:构建扫描。这些也可以托管在前提下,允许组织收集构建历史并进行趋势分析,比较用于调试的构建,或优化构建时间。
4.依赖性管理
(1)这两个构建系统都提供了内建能力来解决可配置存储库中的依赖关系。两者都能够在本地缓存依赖项并并行下载它们。
(2)作为库使用者,Maven允许重写依赖项,但只能通过版本。Gradle提供可自定义的依赖选择和替代规则可以声明一次并处理项目范围内不需要的依赖项。这种替换机制使Gradle能够一起构建多个源项目以创建复合构建。
(3)Maven几乎没有内置的依赖作用域,在常见的场景中强制使用尴尬的模块架构,比如使用测试夹具或生成代码。例如,单元测试和集成测试之间没有分离。分级允许自定义依赖范围,它提供了更好的建模和更快的构建。
(4)Maven依赖冲突解决方案使用最短路径,该路径受声明顺序的影响。Gradle可以完全解决冲突,选择图中的依赖项的最高版本。此外,使用Gradle,您可以将版本声明为严格允许它们优先于传递版本,从而允许降低受抚养人的等级。
(5)作为一个库生产者,Gradle允许生产者声明‘api’和‘Implementation’依赖项防止不必要的库泄漏到消费者的类路径中。Maven允许发布者通过可选依赖关系,但只作为文件。分级全力支持特性变体和可选依赖项。
5.总结
仅自己学习记录,如有错误,敬请谅解~,谢谢~~~
标签:依赖,用户,Gradle,Maven,构建,官方版,IDE 来源: https://blog.csdn.net/qq_39038178/article/details/118600307