Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具。 它使用一种基于Groovy的特定领域语言(DSL)来声明项目配置,真正起作用的是Plugin,Gradle默认提供了许多常用的Plugin,如构建Java项目的Plugin、War、Ear等。
Gradle面向Java应用为主,支持语言:Java、Groovy、Kotlin和Scala。
1、Gradle本身的领域对象:Project、Task。
- Project
- Project本质上说是具有多个Task的容器;
- Project为Task提供了执行上下文,所有的Plugin要么向Project中添加用于配置的Property,要么向Project添加不同的Task。
- Project本质上说是具有多个Task的容器;
- Task
- 一个Task表示一个逻辑上较为独立的执行过程,比如编译Java源代码、拷贝文件、打包jar,设置可以是执行一个系统命令或者调用Ant。
- 所有的Task都存放在Project的TaskContainer中。
- 一个Task可以读取和设置Project的Property以完成特定操作。
- Task可以显示声明类型,如Copy
- Task之间可以存在依赖关系,使用dependsOn声明
task taskA(dependsOn: taskB) { //do something }
- Gradle默认提供的Task包含:查看Project的Properties(properties)、显示当前定义的所有Task(tasks)、 dependencies、projects
- 一个Task表示一个逻辑上较为独立的执行过程,比如编译Java源代码、拷贝文件、打包jar,设置可以是执行一个系统命令或者调用Ant。
备注:默认情况下,Gradle将当前目录下的build.gradle作为项目的构建文件。
2、Task
2.1 Task创建
(1)调用Project的task()方法创建Task;
(2)通过TaskContainer的create()方法创建Task:tasks.create(){}
(3)声明Task之间的依赖关系:定义时声明或者定义Task后再声明依赖;
(4)配置Task的Property:定义时配置、闭包方式配置、调用Task的configure()方法完成设置。
2.2 Task执行
(1)Gradle是一种声明式的构建工具。执行Task分为两个阶段:配置阶段、实际执行阶段。
(2)配置阶段:读取所有build.gradle文件的所有内容来配置Project和Task,如设置Property、处理Task之间的依赖关系。
3、Project
3.1 Gradle默认下为Project定义的Property:
- project:Project本身
- name:Project的名字
- path:Project的绝对路径
- description:Project的描述信息
- buildDir:构建结果存放路径
- version:版本号
3.2 自定义Project的Property
- 在build.gradle中定义Property:通过ext.XXX定义,可以直接访问
- 通过命令后参数设置Property:通过命令行-PXXX传入
- 通过JWM系统参数定义Property:通过命令行-Dorg.gradle.project.XXX传入
- 通过环境变量设置Property:定义环境变量的时候,每一个Property需要以ORG_GRADLE_PROJECT_XXX定义,如export ORG_GRADLE_PROJECT_XXX=“XXX”。
4、Plugin相关的概念
(1)gradle的每一个sourceSet都包含有一个名字、一个名为java(Java源文件集合)的Property、一个名为resources(资源文件集合)的Property。 2(3)Gradle会自动为每一个新创建的source set创建相应的Task:compileJava、processResources和Classes这3个Task。
5、Gradle依赖管理
Gradle的依赖仓库配置:repositories,支持Maven、Ivy、本地文件。
每一组依赖称为一个Configuration。