Gradle 是用于构建项目的工具,除了管理依赖库之外,Gradle 还支持我们自己添加编译脚本、添加编译配置等控制项目的构建,通过提供 API 我们可以控制编译的每一步操作。
Gradle 目前使用最广泛的是 Android 项目的构建,几年前 Google 推出 Android Studio 的同时也把它也推选为默认的构建工具,因此我们也经历了从 Maven 到 Gradle 这一痛苦的转变过程,每天对着满屏的编译失败信息怀疑人生。
实际上 Gradle 也确实对开发者很不友好,用 Gradle 你能遇到各种各样的问题,版本混乱到无以复加,互相还不兼容,甚至对 Android Studio 都有版本要求。不过几乎所有的问题都能 Google 到答案,而我们也能看到确实在逐渐变好。
关于 Gradle 中的依赖与自定义插件,可以点此看我的下一篇文章。
Gradle 基本原理
我们知道 Gradle 是一种以 Groovy 语言为基础的自动化构建工具,一般通过修改 build.gradle 脚本来完成对项目构建的一些设置,例如依赖管理等等。大多数情况下,我们只需要稍微修改下 gradle 文件即可完成自己的需求。
自动化构建工具听起来似乎比较复杂,本质上来说也是一种程序,跟我们自己写的代码一样,我们开始编译时就启动这个程序,然后读取我们在 gradle 文件中配置的参数来实例化各个类,然后按照顺序依次执行对应的任务即可完成整个构建任务。
所以 build.gradle 文件,或者其他后缀为 gradle 的文件其实就是个配置文件,就好像 xml 一样,我们在 gradle 文件中修改各种配置参数,Gradle 通过这些参数来实例化 Project 等等就像构造器一样,只要理解了这点学习 Gradle 就会变得很容易。
当我们新建一个项目后,Gradle 默认会生成一些编译脚本文件,主要有:setting.gradle、build.gradle 以及子项目中的 build.gradle 等等,还会在当前目录下生成一个 gradle 文件夹,下面分别介绍一些这些文件的作用:
- setting.gradle 用来告诉 gradle 这个项目包含了那些子项目。
- build.gradle 是默认的构建脚本,当我们在执行 gradle 命令时,会首先到当前目录下寻找该文件,然后通过该文件的配置实例化一个 Project 对象。
- 自动生成的 gradle 文件夹是 Gradle 包装器,其