1.简介
此文档目的在于介绍Gradle构建语言(DSL 动态脚本语言)的各种组成类型。
2.基础知识
以下内容是撰写Gradle脚本所必须理解的一些概念:
首先,Gradle脚本是一种【配置脚本】,在脚本运行的时候配置某种特定类型的对象。例如,当【构建脚本】(build.gradle)运行的时候,它配置的是一个Project类型的Object实例。这个Project实例被称为该脚本的代理实例对象(delegate object)。
下表展示的是每种类型Gradle脚本的代理:
脚本类型 | 代理实例 |
---|---|
构建脚本 | Project |
初始化脚本 | Gradle |
设定脚本 | Settings |
在脚本内容中你可以设定代理实例的属性、方法。
其次,每个Gradle脚本都实现了Script接口,Script接口定义了Gradle脚本中可以使用的一系列属性和方法。
3.构建脚本的内容结构
一份构建脚本由一个或多个语句和代码块构成。
语句运用于方法调用、变量赋值以及局部变量声明。
代码块则是一个把闭包(Groovy语言中的特殊概念,类似于Java中的回调接口)作为参数的方法调用。
闭包被当做代理实例运行时配置相关属性的【配置闭包】(个人理解为闭包专门配置一些构建脚本在运行的时候所需的一些属性)
代码块 | 内容描述 |
---|---|
allprojects{} | 配置当前Project及其所有子Project |
artifacts{} | 配置当前Project的通用特殊设定 |
buildscript{} | 配置当前Project的构建文本classpath路径 |
configurations{} | 配置当前Project的依赖配置 |
dependencies{} | 配置当前Project的依赖 |
repositories{} | 配置当前Project的代码库 |
sourceSets{} | 配置当前Project的Source sets |
subprojects{} | 配置当前Project的子Project |
publishing{} | 配置发布插件添加的发布扩展信息 |
Gradle的构建脚本是用Groovy语言编写的,所以也可以包含一些Groovy脚本允许的东西,例如Groovy的方法和类。
4.核心类型
Type | Description |
---|---|
Project | 构建文件与Gradle交互所使用的主API接口,可以通过编程访问Gradle所有的特性。 |
Task | 一个Task代表的是构建过程最小的步骤过程,例如编译class或者生成文档 |
Gradle | 代表对Gradle的调用 |
Settings | 声明构建所需实例化的Project实例 |
IncludeBuild | 包含在组合中的单个构建实例 |
Script | 所有Gradle脚本都必须实现的添加特定方法的接口,在脚本编译时实现。可以直接使用该接口所定义的方法和属性 |
JavaToolChain | 构建Java资源的一系列工具 |
SourceSet | 由Java代码和特定资源组成的一个逻辑集合 |
SourceSetOutPut | FileCollection的扩展类,所有输出路径(编译好的Java类、已处理的资源等等)的集合 |
SourceDirectorySet | 由一系列资源路径组成的资源集合, |
IncrementalTaskInputs | 提供需要层叠处理的对于所有资源的访问 |
Configuration | 一组自定义设定及其依赖 |
ResolutionStrategy | 依赖解析的策略规定 |