Gradle is an open-source build automation tool focused on flexibility and performance. Gradle build scripts are written using a Groovy or Kotlin DSL.
Gradle是一款专注于灵活性和性能的开源构建自动化工具。Gradle构建脚本使用Groovy或Kotlin DSL 编写。
DSL 的全称是 Domain Specific Language,即领域特定语言,或者直接翻译成”特定领域的语言”,算了,再直接点,其实就是这个语言不通用,只能用于特定的某个领域,俗称“小语言”。因此 DSL 也是语言。
说白了,Gradle 就是一个自动化构建项目的工具,用来帮助我们自动构建项目。就像我们在写 Java 项目的时候,如果没有构建工具,我们需要先执行 javac
命令先将 Java 源码编译成 class 文件,然后再执行 jar
命令再把 class 文件打成 jar 包。有了构建工具我们只需要点一个按钮就可以了。
Java 的构建,经历了从 Ant
-> Maven
-> Gradle
的过程,每一次的进步,都是为了解决之前的工具带来的问题:
- Ant:Ant 的功能虽然强大,但过于灵活,规范性不足,对目录结构及 build.xml 没有默认约定,且没有统一的项目依赖管理。
- Maven:Maven 解决了规范性的问题,也顺带解决了依赖项统一管理的问题,但由于规范性太强,灵活性不足,pom.xml 采用 xml 结构,项目一大,Xml 就显得冗长。
- Gradle:综合了 Ant 和 Maven 的优点,吸收了 Ant 中 task 的思想,然后把 Maven 的目录规范以及仓库思想也融合了进来,但允许用户自由的修改默认的规范(如:可随意修改源码目录),配置文件则采用 Groovy 语言来书写,Groovy 是一门可编程语言,配置文件本身就可以视为一份源代码,并最终交由 Gradle 来处理执行。
其实 Gradle 跟 Ant、Maven 等构建工具完成工作差不多,但 Gradle 更加强大,它不仅仅是一个构建工具,还是一个开发框架,这点我们将在后面的学习过程中具体体现。
在 Gradle 之前,Android 的项目构建工具是 Ant,用过 Eclipse 的同学应该都用过。 我们知道 Ant 是不支持自动去下载配置依赖 jar 的,这个坑就不提了。还有 Ant 的编译规则是基于 xml 的,用 xml 是很难描述类似这样不同条件的任务的:
if(){
//如果条件成立,编译某文件
}else{
//如果条件不成立,编译某文件
}
然后我们都知道出现了 Gradle,首先 Gradle 是支持自动下载的依赖包的,Gradle 脚本不是像传统的 xml 文件那样,而是一种基于 Groovy 的动态 DSL,而 Groovy 语言是一种基于 jvm 的动态语言。 基于这种设计,Gradle 支持我们像写脚本一样的去写项目的构建规则也就是开发插件。
- Gradle 是一个构建工具,也是一个开发框架,基于 Groovy 语言。 我们可以通过 Groovy 语言去写自己的Gradle 插件,也可以去编写指定的脚本去改变构建规则。
- Android studio中 Gradle 之所以能够构建 Android 工程,是因为有基于 Android 的 Gradle 插件。
下面我们将从下面几个部分来学习:
- Groovy Language
- Gradle DSL
- Android Plugin DSL
- 插件开发
- 插件发布
欢迎你「扫一扫」下面的二维码,关注我的公众号,可以接受最新的文章推送,有丰厚的抽奖活动和福利等着你哦!😍
如果你有什么疑问或者问题,可以 点击这里 提交 issue,也可以发邮件给我 jeanboy@foxmail.com。