欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Gradle学习

程序员文章站 2022-06-27 19:34:36
Gradle是一个基于Apache Ant和Apache Maven概念的 项目自动化构建工具 。 它使用一种基于Groovy的特定领域语言(DSL)来声明项目配置,真正起作用的是Plugin,Gradle默认提供了许多常用的Plugin,如构建Java项目的Plugin、War、Ear等。 Gra ......

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
    1. Project本质上说是具有多个Task的容器;
    2. Project为Task提供了执行上下文,所有的Plugin要么向Project中添加用于配置的Property,要么向Project添加不同的Task。
  • Task
    1. 一个Task表示一个逻辑上较为独立的执行过程,比如编译Java源代码、拷贝文件、打包jar,设置可以是执行一个系统命令或者调用Ant。
    2. 所有的Task都存放在Project的TaskContainer中。
    3. 一个Task可以读取和设置Project的Property以完成特定操作。
    4. Task可以显示声明类型,如Copy
    5. Task之间可以存在依赖关系,使用dependsOn声明
      task taskA(dependsOn: taskB) { //do something }
    6. Gradle默认提供的Task包含:查看Project的Properties(properties)、显示当前定义的所有Task(tasks)、 dependencies、projects

备注:默认情况下,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

  1. 在build.gradle中定义Property:通过ext.XXX定义,可以直接访问
  2. 通过命令后参数设置Property:通过命令行-PXXX传入
  3. 通过JWM系统参数定义Property:通过命令行-Dorg.gradle.project.XXX传入
  4. 通过环境变量设置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。