原版电子书下载地址:Build and Test with Gradle.pdf
Chapter 3. Ant and Gradle
当考虑到利用现有的Apache Ant资源,或许可以使用由Ant社区已创建的大量的任务集,Gradle有一个伟大的故事要讲。Gradle提供了一个完整的Ant超集。事实上,它使得对Gradle Ant的使用比直接使用Ant更简单了,通过部分利用Groovy的AntBuilder功能。Gradle从Ant命名空间中引入一切到Gradle命名空间,这样要使用核心的Ant任务只要很简单的调用ant.[taskname].
通过讨论Gradle Ant的使用来提供一个很好的桥梁以一种渐进的方式逐步转移至一个纯的Gradle理念。随着时间的推移,我们相信你将渴望在更强大的Gradle功能集上标准化,通过使用本地的Gradle组件或包裹在Gradle插件中的任意的Ant行为。后者插件的方式维护了Ant表现的功能集并完全能以约定的方式构建,这点贯穿最新的Gradle构建生态系统。通过对大量已有Ant基础设施以及通过新构建工具来利用它的价值有了充分的认识后,Gradle装配了完整的Ant拷贝,这样使得Ant的默认任务对每一个Gradle构建都可用。为了更加了解这种思维的重新映射,我们将讨论Gradle如何与Ant作比较,以并行的方式编写构建和每一个工具的特有术语。
3.1. The Vocabulary 词汇表
Gradle偶尔会被描述为一个Gradle-based Ant(基于Groovy的Ant).这个将是甘特图(Gant)所填充的角色,但是Gradle有其更加雄心壮志的目标。Gradle提供了Ant的灵活性,这点是许多团队都珍爱的,但是Gradle还有Ivy的依赖管理风格,以及Maven的智能预设,以及Git的速度和散列,和Groovy的元程序设计的能力。这种强有力的最佳组合是加入Gradle活动的本质的动力。
Gradle,与Ant类似,在它的执行计划中有一个任务的有向非循环图(Directed Acyclic Graph,DAG)。然而,Gradle更好利用了这个图,以及未来将会并行地运行在DAG图上的离散路径的任务。Gradle也计划利用维持在内存中的构建DAG通过跨分布式构建机器来并行地运行某些图像路径的任务。模型可视化工具已经创作出了,它将DAG写进成一个DOT格式,如图3-1所示。
图3-1. DAG of Gradle Tasks
提示:Ant和Gradle都使用同一个词task(任务),但是在各自的命名空间中有不同的意思。