### 概述
#
* * * * *
#
### 特性说明
#### 下面是一些 Gradle 特性的列表。
* ### 基于声明的构建和基于约定的构建
Gradle 的核心在于基于 Groovy 的丰富而可扩展的域描述语言(DSL)。 Groovy 通过声明性的语言元素将基于声明的构建推向下层,你可以按你想要的方式进行组合。 这些元素同样也为支持 Java, Groovy,OSGi,Web 和 Scala 项目提供了基于约定的构建。 并且,这种声明性的语言是可以扩展的。你可以添加新的或增强现有的语言元素。 因此,它提供了简明、可维护和易理解的构建。****
* ### 为以依赖为基础的编程方式提供语言支持
声明性语言优点在于通用任务图,你可以将其充分利用在构建中. 它提供了最大限度的灵活性,以让 Gradle 适应你的特殊需求。
* ### 构建结构化
Gradle 的灵活和丰富性最终能够支持在你的构建中应用通用的设计模式。 例如,它可以很容易地将你的构建拆分为多个可重用的模块,最后再进行组装,但不要强制地进行模块的拆分。 不要把原本在一起的东西强行分开(比如在你的项目结构里),从而避免让你的构建变成一场噩梦。 最后,你可以创建一个结构良好,易于维护,易于理解的构建。
* ### 深度 API
Gradle 允许你在构建执行的整个生命周期,对它的核心配置及执行行为进行监视并自定义。
* ### Gradle 的扩展
Gradle 有非常良好的扩展性。 从简单的单项目构建,到庞大的多项目构建,它都能显著地提升你的效率。 这才是真正的结构化构建。通过最先进的增量构建功能,它可以解决许多大型企业所面临的性能瓶颈问题。
* ### 多项目构建
Gradle 对多项目构建的支持非常出色。项目依赖是首先需要考虑的问题。 我们允许你在多项目构建当中对项目依赖关系进行建模,因为它们才是你真正的问题域。 Gradle 遵守你的布局。
Gradle 提供了局部构建的功能。 如果你在构建一个单独的子项目,Gradle 也会帮你构建它所依赖的所有子项目。 你也可以选择重新构建依赖于特定子项目的子项目。 这种增量构建将使得在大型构建任务中省下大量时间。
* ### 多种方式管理依赖
不同的团队喜欢用不同的方式来管理他们的外部依赖。 从 Maven 和 Ivy 的远程仓库的传递依赖管理,到本地文件系统的 jar 包或目录,Gradle 对所有的管理策略都提供了方便的支持。
* ### Gradle 是第一个构建集成工具
Ant tasks 是最重要的。而更有趣的是,Ant projects 也是最重要的。 Gradle 对任意的 Ant 项目提供了深度导入,并在运行时将 Ant 目标(target)转换为原生的 Gradle 任务(task)。 你可以从 Gradle 上依赖它们(Ant targets),增强它们,甚至在你的 build.xml 上定义对 Gradle tasks 的依赖。Gradle 为属性、路径等等提供了同样的整合。
Gradle 完全支持用于发布或检索依赖的 Maven 或 Ivy 仓库。 Gradle 同样提供了一个转换器,用于将一个 Maven pom.xml 文件转换为一个 Gradle 脚本。Maven 项目的运行时导入的功能将很快会有。
* ### 易于移植
Gradle 能适应你已有的任何结构。因此,你总可以在你构建项目的同一个分支当中开发你的 Gradle 构建脚本,并且它们能够并行进行。 我们通常建议编写测试,以保证生成的文件是一样的。 这种移植方式会尽可能的可靠和减少破坏性。这也是重构的最佳做法。
* ### Groovy
Gradle 的构建脚本是采用 Groovy 写的,而不是用 XML。 但与其他方法不同,它并不只是展示了由一种动态语言编写的原始脚本的强大。 那样将导致维护构建变得很困难。 Gradle 的整体设计是面向被作为一门语言,而不是一个僵化的框架。 并且 Groovy 是我们允许你通过抽象的 Gradle 描述你个人的 story 的黏合剂。 Gradle 提供了一些标准通用的 story。这是我们相比其他声明性构建系统的主要特点。 我们的 Groovy 支持也不是简单的糖衣层,整个 Gradle 的 API 都是完全 groovy 化的。只有通过 Groovy才能去运用它并对它提高效率。
* ### The Gradle wrapper
Gradle Wrapper 允许你在没有安装 Gradle 的机器上执行 Gradle 构建。 这一点是非常有用的。比如,对一些持续集成服务来说。 它对一个开源项目保持低门槛构建也是非常有用的。 Wrapper 对企业来说也很有用,它使得对客户端计算机零配置。 它强制使用指定的版本,以减少兼容支持问题。
* ### 自由和开源
Gradle 是一个开源项目,并遵循 ASL 许可。
* ### 为什么使用 Groovy?
我们认为内部 DSL(基于一种动态语言)相比 XML 在构建脚本方面优势非常大。它们是一对动态语言。 为什么使用 Groovy?答案在于 Gradle 内部的运行环境。 虽然 Gradle 核心目的是作为通用构建工具,但它还是主要面向 Java 项目。 这些项目的团队成员显然熟悉 Java。我们认为一个构建工具应该尽可能地对所有团队成员透明。
你可能会想说,为什么不能使用 Java 来作为构建脚本的语言。 我认为这是一个很有意义的问题。对你们的团队来讲,它确实会有最高的透明度和最低的学习曲线。 但由于 Java 本身的局限性,这种构建语言可能就不会那样友善、 富有表现力和强大。 [1] 这也是为什么像 Python,Groovy 或者 Ruby 这样的语言在这方面表现得更好的原因。 我们选择了 Groovy,因为它向 Java 人员提供了目前为止最大的透明度。 其基本的语法,类型,包结构和其他方面都与 Java 一样,Groovy 在这之上又增加了许多东西。但是和 Java 也有着共同点。
对于那些分享和乐于去学习 Python 知识的 Java 团队而言,上述论点并不适用。 Gradle 的设计非常适合在 JRuby 或 Jython 中创建另一个构建脚本引擎。 那时候,对我们而言,它只是不再是最高优先级的了。我们很高兴去支持任何社区努力创建其他的构建脚本引擎。
- 简介和说明
- 第1部分:Git 相关
- 第1章:Git
- 第2章:电子书写作
- 1.Gitbook【弃用】
- 2.看云
- 第3章:Github
- 3.1.Github 初步使用
- 3.2.Github 基本操作
- 3.3.Github 与其它平台的交互使用
- 3.4.Github 优秀项目介绍
- 第4章:码云
- 第2部分:Markdown
- 第1章:Markdown 使用教程
- 第2章:Markdown 基本语法
- 第3章:Markdown 语法详解
- 第4章:Markdown 模板套用
- 第3部分:Android Studio
- 第1章:Android Studio 概述
- 第2章:Android Studio 快捷键整理
- 2.1.最常用快捷键
- 2.2.不常用快捷键
- 2.3.IntelliJ IDEA使用技巧一览表
- 第4部分:TeX
- 第1章:TeX 概述
- 第5部分:MatLab
- 第1章:MatLab 概述
- 第6部分:Gradle
- 第1章:Gradle 相关说明
- 1.1.Gradle 简介
- 1.2.Gradle 概述
- 1.3.Gradle 安装
- 1.4.Gradle 问题反馈
- 第2章:如何使用 Gradle 构建系统
- 第3章:构建系统过程中涉及的插件
- 第7部分:阿里巴巴 Java 开发手册
- 第1章:编程规约
- 1.1.命名规约
- 1.2.常量定义
- 1.3.格式规约
- 1.4.OOP 规约
- 1.5.集合处理
- 1.6.并发处理
- 1.7.控制语句
- 1.8.注释规约
- 1.9.其它
- 第2章:异常日志
- 2.1.异常处理
- 2.2.日志规约
- 第3章:MySQL 规约
- 3.1.建表规约
- 3.2.日志规约
- 3.3.SQL 规约
- 3.4.ORM 规约
- 第4章:工程规约
- 4.1.应用分层
- 4.2.二方库规约
- 4.3.服务器规约
- 第5章:安全规约
- 第8部分:Gradle for Android
- 第1章:从 Gradle 和 AS 开始
- 第2章:Build.gradle入门
- 第3章:依赖管理
- 第4章:构建变体
- 第5章:多模块构建
- 第6章:测试
- 第7章:Groovy入门