Chapter 2. Overview 总览

    Gradle 的核心是在 基于 Groovy 对 Domain Specific Language (DSL)语言进行一个丰富的扩展。Gradle 通过提供声明式语言元素,根据个人喜好可以将声明式构建推到下一个级别。这些元素也提供支持 Java、Groovy、OSGi、Web 和 Scala 项目。同时,这个声明式语言是可扩展的。可以添加您自己的新语言元素或增强现有的元素,从而提供简洁、易于维护和易于理解的构建。

    Language for dependency based programming 依赖型编程语言

    声明式语言位于一个通用的任务图,你可以充分利用你的构建。它提供了适应您的独特需求的最大灵活性的 Gradle。

    Structure your build 良好的结构

    Gradle 的柔软性和丰富性允许您用一般性设计原则来构建项目。例如,从可重用的构建逻辑片段来组成你的构建是非常容易的。 多余不必要的内联的东西是不适当的。 不要强制把属于一起的东西分开(例如在您的项目层次结构中)。 避免像像猎枪的气味那样变化,从而使你的构建成为一个维修噩梦。 最后,你可以创建一个结构良好、易于维护、易于理解的构建。
    可理解构建

    Deep API 深层次的API

    在整个生命周期的构建执行过程中,可以方便内嵌使用 Gradle 的各种钩子,从而为您监视和自定义配置和执行行为。

    Gradle 伸缩性能非常好。它会增加你的生产力,从简单的单项目到建立庞大的企业多项目建设。这对于组织构建是正确的。通过最先进的增量构建功能,可以真正的解决许多大型企业构建遭受的性能痛苦。

    Multi-project builds 多项目构建

    Gradle 提供部分构建。 如果构建单个子项目,Gradle 将负责构建该子项目所依赖的所有子项目。 您还可以选择重建依赖于特定子项目的子项目。再加上增量构建,对于较大的构建这很节省很多时间。

    Many ways to manage your dependencies 多途径管理依赖

    不同的团队喜欢不同的方式来管理他们的外部依赖。Gradle 提供任何便捷的策略支持。从远程 Maven 和 Ivy 库的依赖管理与到本地文件系统上 jars 或目录。

    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 项目运行的进口就快来了。

    Gradle 可以适应任何已有的结构。因此,您可以随时在同一个分支中开发您的 Gradle 构建,使你的产品构建可以并行演化。 我们通常建议编写测试,确保生成的工件是相似的。 这样迁移的破坏性越小,越可靠越好。这是继重构应用小步骤的最佳实践。

    Groovy 语言

    Gradle 的构建脚本是用 Groovy 编写的,而不是 XML。 但不同于其他方法,这不是简单地暴露动态语言的原始脚本功能,这只会导致一个非常难以维护的构建。 Gradle 的整个设计面向被用作一种语言,而不是一个僵硬的框架。 Groovy 允许你用 Gradle(或你)提供的抽象来讲述你的个人故事(story)。

    Gradle 提供了一些标准的故事,但是它们没有任何形式的特权。与其他声明式构建系统相比,这是一个重要的区别特性。 我们的 Groovy 支持不仅仅是糖衣。 整个 Gradle API 是完全 Groovy 化的。 添加 Groovy 结果,从而可以获得愉快而富有成效的体验。

    The Gradle wrapper 关于Gradle Wrapper

    该 Gradle 包装允许你机器上没有安装Gradle工具也能执行 Gradle 的构建。这对于例如一些连续集成服务器是非常有用的。 它对于一个开源项目来说也是有用的,可以以低门槛的前提来建立它。 Gradle Wrapper 对于企业也很有趣。 它对客户机来说是零管理。 它还强制使用特定的 Gradle 版 本,从而减少了支持问题。

    Free and open source 免费开源

    Gradle 开源项目,遵守开源协议

    2.2. Why Groovy? 为啥用 Groovy

    我们认为,当使用构建脚本作为内部 DSL (基于动态语言)比 XML 有更大的优势。有很多动态语言,但为啥是 Groovy?答案是在于上下文工具的操作。虽然 Gradle 是一个通用的构建工具,这是它的核心,但它的主要焦点还是是 Java 项目。在这样的项目中,团队成员更加熟悉 Java。我们考虑的是编译应该都所有成员来说是尽可能的透明。

    对于对 Python 或 Ruby 知识拥有强烈的学习欲望的 Java 开发者来说,上述论点不适用。该工具的设计非常适合于创建另一个建立在 JRuby 和Jython 脚本引擎。对于我们来说暂时它只是不具有最高优先级。我们高兴地支持任何社区的努力来创建额外的构建脚本引擎。