Gradle 基础教程 - 简介
因为出现的比较早,所以,Ant 和 Maven 在 Java 的构建工具中取得了相当大的市场份额。
当然了,也因为出现的比较早,所以使用的编程思想也比较老旧,比如:
-
ANT 是 2000 年发布的第一个构建工具,它是基于程序编程思想开发的,最坑坑的是,一开始它是离线的。后来,开发者对它做了一些改进,差不多就是现在这样,可以通过 Apache-Ivy 从网络上获取插件和依赖管理。
ANT 最主要缺点是 XML 作为编写构建脚本的格式。 XML 是分层的,并不适合程序编程,并且往往变得难以管理。
-
Maven 发布于 2004 。Maven 可以说是对 ANT 的重写,基本上改变了 ANT 的结构,也增加了一些其它改进,但本质上,还是继承了 Ant 那套使用 XML 来编写构建规范。Maven 的依赖是基于约定的,而且可以通过网络下载依赖项。
Maven 带来的最大的好处应该是 Java 项目的生命周期管理。对于构建项目的人员,这意味着只需要学习一小堆命令即可构建任何 Maven 项目,
.pom
文件将确保他们获得所需的结果。Maven 最大的问题是它的依赖管理。它不能处理同一个库的不同版本之间的冲突,并且复杂的自定义格式使得构建脚本在 Maven 中比在 ANT 中更难编写。
在这样的大背景下,Gradle 在 2012 年横空出世了,且兼具了 Ant 和 Maven 两种构建工具的高效功能。
Gradle 的特性
在 2004 到 2012 年这一段时间,即使现在的 Gradle 问世六年后,Maven 在 Java 项目构建领域仍然牢牢占据这霸主地位。
好消息是 Gradle 有赶超之势,尤其是 Android 使用它作为官方推荐和默认的构建工具。
在年轻的一代 Java 开发者中,他们更偏爱简单的 Gradle,而不是使用 .pom
繁杂语法的 Maven。
接下来我们来看看 Gradle 到底有哪些特性:
-
声明性构建和常规构建。Gradle 使用了基于 Groove 的独立的特定领域语言 ( DSL ),提供了声明性语言元素。这些元素还为 Java、Groovy、OSGi、Web 和 Scala 提供了常规构建支持。
-
基于依赖编程的语言。声明性的语言可以用在任何常规的任务之中,也就是说我们可以在构建中充分利用它们。
-
结构化我们的构建。 我们可以在构建脚本中使用常见的设计原则。Gradle 为我们提供了完美的构建结构,因此我们可以设计结构良好且易于维护,易于理解的构建
-
底层 API。通过这些 API,我们可以监视和自定义其核心的配置和执行行为。
-
Gradle 伸缩能力 。Gradle 可以轻松提高生产力,从简单的单项目构建到大型企业多项目构建。
-
多项目构建 。Gradle 支持多项目构建以及部分构建。如果你想要构建一个子项目,Gradle 将负责构建它所依赖的所有子项目。
-
多种方式管理构建。 Gradle 支持不同的策略来管理一个项目的依赖项。
-
Gradle 首创构建集成 。Gradle 完全支持 ANT 任务,Maven 和 lvy 存储库基础结构,用于发布和检索依赖项。
-
易于迁移 。 Gradle 可以轻松适应任何结构。因此,我们可以在可以同一分支中开发不同的 Gradle 构建。
-
Gradle Wrapper。 Gradle Wrapper 允许开发者在未安装 Gradle 的计算机上执行 Gradle 构建,经常用于持续集成开发。
-
免费开源。 Gradle 是一个开源项目,使用了 Apache 的软件许可证( ASL )。
-
Groovy 。Gradle 的构建脚本是用 Groovy 编写的。Gradle 的整个设计宗旨是成为一个 DSL 构建语言,而不是一个严格的框架。Groovy 允许开发者使用一些抽象编写自己的脚本。
整个 Gradle API 都是用 Groovy 语言设计的。
为什么是 Groovy 语言 ?
Gradle 是使用 Groovy 语言开发的,构建语法也是使用 Groovy 定制的 DSL 。这种内部的 DSL 语法本身就比 XML 简单太多了。
虽然 Gradle 当前聚焦在 Java 项目上,但 Gradle 的目标是成为一个通用构建的核心,而不是一个通用构建工具。
Python,Groovy 或 Ruby 等语言都适合开发构建框架。 但为什么唯独选择了 Groovy ?
因为 Java 和 Groovy 都是基于 JVM 的语言,因为 Grovvy 为使用 Java 的人提供了迄今为止最大的透明度。Groovy 的基本语法与 Java 相同,但 Groovy 提供了更多功能。