WX20190413-150809@2x.png
前言:最近在学习Netty,其中看到不少牛牛们的项目工程都是使用gradle构建的,作为一个上(好)进(奇)的程序员,打开了Gradle的官网,了解了一番,这里做个记录。
Gradle官网(学习Gradle的不二之选)
Gradle简介
Gradle是一个旨在提高开发者效率的构建工具。不管是移动APP还是微服务,不管是小的初创项目或者大型企业级项目,Gradle都可以帮我们更好更快的自动化的构建实现我们的软件项目。
引自wikipedia:Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy(新版还可基于kotlin)的特定领域语言来声明项目设置,而不是传统的XML。
Gradle对比Maven
Gradle VS Maven
灵活性
Gradle和Maven虽都提供了约定由于配置的机制,但是Maven提供的是一个非常严格,对用户定制不太友好甚至有时无法定制的系统,这也侧面展示了Maven的能力范围,只要你没有一些定制化的特殊需求,Maven基本可以满足大多数需要自动化构建的场景,在这一点上,Gradle就给予了用户更大的灵活度,同时还降低了复杂度。
性能
WX20190413-154338@2x.png
Maven和Gradle都使用了并行构建,并行依赖解析的方式。Gradle区别于Maven最大的地方在于其work avoidance and incrementality机制。最大的3个让Gradle构建更快的原因是:
- Incrementality:Gradle不会对Task的所有输入进行追踪构建,只会尽量处理被改变了的文件。
- Build Cache:充分重用构建以前的构建结果,即便是其他Gradle版本或其他机器上构建出的结果。
- Gradle Daemon:后台进程对构建信息进行持续追踪,keeps build information "hot" in memory。
更多性能对比见Gradle vs Maven: Performance Comparison
用户体验
Maven作为现在大多数项目默认使用的构建工具,得到了大多数IDE的支持。Gradle这方面还是快速的进步,比如现在Gradle还支持了基于Kotlin DSL进行构建逻辑的定义,使支持Kotlin的的IDE自然的友好支持了Kotlin。除了使用IDE,还有很多用户喜欢使用命令行进行构建,Gradle也提供了待自动提示的命令行工具gradle-completion。
依赖管理
Ant与Maven对于Gradle,前者编写容易,但功能有限,需要人工操作的过程也多;后者依托于庞大的依赖仓库,因此有着强大的外部依赖管理,但添加本地依赖并不方便,且项目不能灵活修改。而Gradle能很好地结合Ant与Maven各自的优点,可以随意的编写任务并组合成项目,直接利用Maven仓库,并且能很好的支持传递依赖和内部依赖。













网友评论