Gradle学习

Posted AmyZYX

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gradle学习相关的知识,希望对你有一定的参考价值。

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。

以上是关于Gradle学习的主要内容,如果未能解决你的问题,请参考以下文章

如何使用模块化代码片段中的LeakCanary检测内存泄漏?

如何添加jcenter仓库 gradle依赖

IOS开发-OC学习-常用功能代码片段整理

java SpringRetry学习的代码片段

python 机器学习有用的代码片段

如何防止Android studio格式化build.gradle