gradle 用户手册 第2章 概览


目录:
2.1 特性
2.2 为啥选择Groovy?


2.1 特性

下面是Gradle的一些特性


声明式build和按约定build

Gradle的核心部分有一个基于Groovy的富扩展性的领域特定语言(DSL)。通过提供能够灵活组合的声明式语言元素,Gradle将声明式build提高到一个更高的层次。这些元素同时为Java,Groovy,OSGi,Web和Scala项目提供了约定式build。而且,这个声明式语言是可扩展的。大家可以添加自己想要的语言元素,或者对已有的元素进行修改或者增强,这样就能够提供简约,可维护性且可理解的build。

基于依赖编程的语言

声明式语言以通用任务图为先决条件,这样大家就可以很容易的定义自己的build。声明式语言为Gradle满足各种需求提供了最大的灵活性。

设计自己的build

Gradle丰富而灵活的特性能够让大家把通用的设计远离应用到自己的build中去。比如,大家可以很容易的将一些可重复使用的build逻辑添加到自己的build中。我们不提倡一些内部的不必要的引用。不要把一些原本是一个逻辑的东西强制拆开(比如项目的继承)。尽力避免那些破坏build维护性的漫无目的的或者有分歧的变动。如果秉着这种态度,大家就可以构建一个结构良好,易于维护,通俗易懂的build。

全面而深入的API

由于Gradle的易用性,是植根于在整个build过程执行时的 hook(hook可以在build过程中注入一些其他的动作)的,因此Gradle允许大家对其内核进行监控,定制配置以及定制执行方式。

Gradle的伸缩性

Gradle具有良好的伸缩性(不因项目过大而性能骤降)。不管小项目还是大项目亦或是多模块项目的build,Gradle都能极大的提高大家的生产力。Gradle能够提升build的构建。当然,由于高水准的增量build功能,Gradle同样能够解决很多大公司级别的build的性能痛点。

多模块项目build

Gradle对多模块项目的build有着非常优秀的支持。Gradle天生支持项目依赖。Gradle能够让大家在自己的问题领域,按照实际需求来维护一个多模块项目build中各个项目之间的关系。Gradle是按照大家的项目布局要求来做的,这可不是空喊口号。
Gradle提供了分块build的功能。比如大家想单独build一个子项目(模块),
Gradle会为大家自动构建这个子项目所依赖的其他子项目。当然,大家也可以重新
构建依赖某个指定子项目的子项目。这个特性和增量build一起,为大项目的
构建节省很多时间。

管理依赖的多种方式

不同的项目组喜欢不同的方式来管理自己的外部依赖。Gradle提供了很容易方式来支持不同的依赖策略。不论是基于远程maven或者Ivy仓库的传递性依赖管理,还是依赖于本地系统目录的方式,Gradle都是支持的。

Gradle是第一个build整合工具

Gradle完全支持ant的task,更有趣的是,Gradle同样完全支持ant项目,Gradle能够
在运行时把ant 的target转换成Gradle的的task。大家可以在Gradle中依赖ant项目,也可以通过Gradle来增强ant,甚至可以再Gradle 的build.xml中声明Gradle 的task对ant的依赖。这种整合对properties,paths等都是有效的。

轻松的迁移

Gradle适用于各种结构的项目。因此大家可以在项目的分支上直接用Gradle来构建,而且该构建可以和项目同时升级或者修改。我们建议大家最好测试一下构建出来的包是否相似,以保证可靠性。这种迁移方式减少了对项目的破坏性,同时提高了可靠性。这遵循了通过最小改动来获取最好体验的准则。

Groovy

Gradle的build脚本是不是用XML,而是用Grvooy来写的。选取这种方式并非为了展示动态语言全新的脚本能力。这中方式反而加大了维护build的难度。Gradle的定位不是为了成为一个死板的框架,是朝着成为一种构建语言来发展的。而Groovy成为了用Gradle的架构来构建不同的项目的粘合剂。Gradle提供了几个通用性的标准的格式。这就是我们和其他声明式build系统最大的不同。我们对Groovy的支持不是仅仅在语法糖层面的,而是将整个Gradle的api都全部Groovy化了。使用Groovy为我们带来了一个高产且轻松的体验。

Gradle wrapper(Gradle包装)

Gradle wrapper 可以保证Gradle的build在没有安装Gradle的机器上运行。这对持续集成的模版是很有用的。这也可以降低构建开源项目难度。这个包装对公司来说很有意思。他能够保证客户机上零管理运行。包装能够强制项目使用指定的Gradle版本,从而降低支持相关问题。

免费和开源

Gradle是开源项目,许可证是注册在ASL(The Apache Software License)下的。

2.2为什么选择Groovy?

我们认为internal DSL (基于动态语言)作为构建脚本比XML作为动态脚本要有很大的优势。现在有很多动态语言,为啥我们选择Groovy呢?答案就在Gradle要操作的内容里面。虽然说Gradle的内核是一个通用的构建工具,但还是主要针对于java项目,而Java项目组成员肯定对Java是相当熟悉的,我们认为一个build对项目组的成员应该越容易越好。
这时,大家可能会说,为啥不用Java来当作build脚本的语言呢?我们觉得这时一个很正当的问题。Java固然对小组成员来说特别容易,而且学习难度极低。但是由于Java本身的限制,Java作为构建语言不会像她作为编程语言那样优美和强力有效。像Python,Goovy,Ruby这类型的语言反而能够提供更好的作用。我们选择Grvooy是因为这是目前为止对Java开发人员来说最容易使用的动态语言。Groovy的语法,包结构,系统类型还有其他一些特性都和Java一样。Groovy通过以Java为基础,还提供了很多其他特性。

对于有着Ruby或者Python经验或者想学习她们的Java开发人员来说,上述讨论并没有太大的意义。Gradle设计之初就是能很好的兼容其他脚本引擎(比如Ruby和Python)。只是现在这不是我们最关心的。但我们很乐意为任何想要为Gradle添加新的构建脚本引擎的社区提供支持。


[1],在http://www.defmacro.org/ramblings/lisp.html 大家可以看到有关比较 Ant,XML,Java和Lisp的文章。有趣的是,文章有提到'如果Java拥有那种语法(会比较好)',而Groovy恰恰就有这这中语法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值