第2章 Overview 总览
最后更新于:2022-04-01 02:32:24
## 2.1\. Features 特性
下面列出了一些 Gradle 的特性:
### [](https://github.com/waylau/Gradle-2-User-Guide/blob/master/Chapter%2002.%20Overview%20%E6%80%BB%E8%A7%88.md#declarative-builds-and-build-by-convention声明式构建符合公约)Declarative builds and build-by-convention声明式构建,符合公约
gradle 的核心是在 基于 Groovy 对 Domain Specific Language (DSL)语言进行一个丰富的扩展。根据喜好,Gradle 将陈述建立下一级提供声明性语言元素。这些元素也提供支持 Java,Groovy,OSGi,Web和Scala 项目。甚至更多,这说明语言是可扩展的。添加您自己的新语言元素或加强现有的,从而提供了简洁,易于维护和易于理解的构建
### [](https://github.com/waylau/Gradle-2-User-Guide/blob/master/Chapter%2002.%20Overview%20%E6%80%BB%E8%A7%88.md#language-for-dependency-based-programming-依赖型编程语言)Language for dependency based programming 依赖型编程语言
声明式语言位于一个通用的任务图,你可以充分利用你的建立。它提供了适应您的独特需求的最大灵活性的工具。
### [](https://github.com/waylau/Gradle-2-User-Guide/blob/master/Chapter%2002.%20Overview%20%E6%80%BB%E8%A7%88.md#structure-your-build-良好的结构)Structure your build 良好的结构
工具的柔软性和丰富性允许您用一般性设计原则来构建项目。你可以创建一个结构良好,易于维护,易于理解的建立。
### [](https://github.com/waylau/Gradle-2-User-Guide/blob/master/Chapter%2002.%20Overview%20%E6%80%BB%E8%A7%88.md#deep-api-深层次的api)Deep API 深层次的API
工具允许您监视和自定义配置和执行行为
### [](https://github.com/waylau/Gradle-2-User-Guide/blob/master/Chapter%2002.%20Overview%20%E6%80%BB%E8%A7%88.md#gradle-scales-可伸缩)Gradle scales 可伸缩
Gradle 伸缩性能非常好。它会增加你的生产力,从简单的单项目到建立庞大的企业多项目建设。
### [](https://github.com/waylau/Gradle-2-User-Guide/blob/master/Chapter%2002.%20Overview%20%E6%80%BB%E8%A7%88.md#multi-project-builds多项目构建)Multi-project builds 多项目构建
Gradle支持多项目建设非常突出。项目依赖是一等公民。
### [](https://github.com/waylau/Gradle-2-User-Guide/blob/master/Chapter%2002.%20Overview%20%E6%80%BB%E8%A7%88.md#gradle-is-the-first-build-integration-toolgradle是第一个建立的集成工具)Gradle is the first build integration tool Gradle是第一个建立的集成工具
Ant 任务是一等公民。更有趣的是,Ant 的项目也都是一等公民。Gradle 提供深入的引用给 Ant 项目,在运行时,可以转换 Ant 目标到 原生的Gradle 任务。你可以依靠他们的工具,可以提高他们的工具,你甚至可以在build.xml 宣布对 Gradle 任务的依赖。相同的集成提供了性能,路径,等…
Gradle 支持现有的 Maven 或 Ivy 仓库依赖关系。工具还提供了一个转换器将 Maven pom.xml 转成 Gradle 脚本。Maven 项目运行的进口就快来了。
### [](https://github.com/waylau/Gradle-2-User-Guide/blob/master/Chapter%2002.%20Overview%20%E6%80%BB%E8%A7%88.md#ease-of-migration-易迁移)Ease of migration 易迁移
Gradle 可以适应任何已有的结构。我们通常建议写测试,确保与生产环境类似。这样的迁移是更少的破坏性和尽可能的可靠。这是继重构应用小步骤的最佳实践。
### [](https://github.com/waylau/Gradle-2-User-Guide/blob/master/Chapter%2002.%20Overview%20%E6%80%BB%E8%A7%88.md#groovy-语言)Groovy 语言
工具的构建脚本是用 Groovy,不是XML。但是,不像其他的方法,这不是简单地将动态语言的原始脚本进行能力的扩展。这只会导致一个保持非常困难的构建。工具的总体设计是面向的是将 Gradle 作为一种语言,而不是一个严格的框架。工具提供了一些标准的故事,但他们不做任何形式的限制。这是我们的一个主要特点。
### [](https://github.com/waylau/Gradle-2-User-Guide/blob/master/Chapter%2002.%20Overview%20%E6%80%BB%E8%A7%88.md#the-gradle-wrapper-关于gradle的包装)The Gradle wrapper 关于Gradle的包装
该Gradle包装允许你机器上没有安装Gradle工具也能执行 Gradle 的构建
### [](https://github.com/waylau/Gradle-2-User-Guide/blob/master/Chapter%2002.%20Overview%20%E6%80%BB%E8%A7%88.md#free-and-open-source-免费开源)Free and open source 免费开源
遵守[ASL](http://www.gradle.org/license)开源协议
## [](https://github.com/waylau/Gradle-2-User-Guide/blob/master/Chapter%2002.%20Overview%20%E6%80%BB%E8%A7%88.md#22-why-groovy-为啥用-groovy)2.2\. Why Groovy? 为啥用 Groovy
我们认为,当使用构建脚本作为内部 DSL (基于动态语言)比 XML 有更大的优势。有很多动态语言,但为啥是 Groovy?答案是在于上下文工具的操作。虽然 Gradle 是一个通用的构建工具,这是它的核心,但它的主要焦点还是是 Java 项目。在这样的项目中,团队成员更加熟悉 Java。我们考虑的是编译应该都所有成员来说是竟可能的透明。
你可能会说,为什么不使用 Java 作为构建脚本。这里有一个问题,就是对于团队的最高的透明度和最低的学习曲线,但是 由于 Java 语言的限制,作为构建语言效果并不理想(参考 [http://www.defmacro.org/ramblings/lisp.html ](http://www.defmacro.org/ramblings/lisp.html)可以看到 Ant, XML, Java 和 Lisp 的对比,有趣的是,Java 的语法实际上是 Groovy 的语法。)。其他语言, Python, Groovy 或者 Ruby 都更能胜任这个工作。我们选择 Groovy 是因为对于 Java 使用者来说有更高的透明度。它的基本语法与 Java 类似,包括 本文系统,包结构和其他方面。Groovy 提供了最重要内容但都是符合 Java 基础功能的。
对于对 Python 或 Ruby 知识拥有强烈的学习欲望的 Java 开发者来说,上述论点不适用。该工具的设计非常适合于创建另一个建立在 JRuby 和Jython 脚本引擎。对于我们来说暂时它只是不具有最高优先级。我们高兴地支持任何社区的努力来创建额外的构建脚本引擎。