如下内容为本人基于官方文档的翻译和理解,若是你们有条件能够直接查看 Gradle 官网:android
Gradle 是一款专一于灵活性和性能的开源构建自动化工具。markdown
Gradle 的build scripts 能够用Groovy or Kotlin DSL 来写。由于我是写 Android 的,日常开发的语言也是 Kotlin,因此我更倾向于用 Kotlin 来写 Gradle。app
Gradle 主要有如下几个特色:工具
Gradle容许咱们构建任何的项目,它对构建的内容和应如何完成的工做没有具体的限制,除此以外惟一的限制就是,添加依赖项管理目前只支持与Maven和Ivy兼容的存储库以及文件系统。性能
不过这并不意味着咱们须要作不少工做来建立一个 Gradle。Gradle经过添加约定和通用插件来添加预先构建的功能,使构建通用类型的项目(例如Java Library 和 Android lugin)变得容易。咱们还能够建立和发布自定义插件来封装本身的约定并构建功能。 就好比一个 Android 项目,com.android.application 和 com.andorid.library 插件已经帮咱们作了不少通用的事情,咱们在 Android studio 里建立项目以后就能够跑。gradle
Gradle 的核心构建模型是基于TAG(有向无环图),也就是本质上来讲 Gradle 的一次构建就是基于每一个 Tasks 和他们相互之间的依赖关系来建立 TAG,并按序来执行这个 TAG。 下面有两个例子: 基本上全部的Gradle build 都能抽象成如上图所示的 TAG,这也就是为何 Gradle 如此灵活的缘由。
一个 Task 由这三点构成:ui
固然对于一个 task 上面的三个都是可选项,取决于 task 所须要作的事情。例如 standard lifecycle tasks 是没有 Action 的,他们的做用就是为了将多个 Task 聚合。spa
你能够指定具体执行哪个任务,例如:
gradle test
将执行 test 任务。插件
最后一点须要注意的事项是 Gradle 具备健壮的增量构建系统,来加快咱们的 build 速度,因此尽可能避免去执行 clean task 除非真的有必要去执行 clean 任务。翻译
理想状况下,若是咱们仅仅可使用 Gradle 捆绑的构建逻辑来构建项目。但这几乎是不可能的。大多数构建都有一些特殊要求,这意味着咱们须要添加自定义构建逻辑。
当您但愿构建完成现有任务没法完成的工做时,只需编写本身的任务类型便可。一般最好将自定义任务类型的源文件放在buildSrc目录或打包的插件中。而后,您能够像Gradle提供的任何任务同样使用自定义任务类型。
您能够经过Task.doFirst()和Task.doLast()方法附加在任务以前或以后执行的自定义构建逻辑。
这些容许您将本身的属性添加到项目或任务中,而后能够从您本身的自定义操做或任何其余构建逻辑中使用它们。额外的属性甚至能够应用于您未明确建立的任务,例如Gradle的核心插件建立的任务。
约定是简化构建的强大方法,所以用户能够更轻松地理解和使用它们。使用标准项目结构和命名约定的构建(例如Java build)能够看出这一点。您能够编写本身的提供约定的插件-它们只须要为构建的相关方面配置默认值。
Gradle容许您在任务,文件和依赖项配置以外将新概念引入构建。您能够在大多数语言插件中看到这一点,这些插件将源集的概念添加到了构建中。构建过程的适当建模能够大大提升构建的易用性及其效率。