Gradle入门

Gradle是什么?

一个开源的项目自动化构建工具,建立在Apache Anthe和Apache Maven概念的基础上,引入了基于Groovy的特定领域语言(DSL),而不再使用XML形式管理构建脚本。

为什么需要项目自动化构建工具?

对于大部分的软件开发者都会面临下面的问题:

  • 开发人员都会使用IDE来进行编码,IDE帮用户实现了代码环境配置,编译代码,重构优化代码等功能。但由于不同开发人员使用的IDE版本不一样,可能会导致其他人在IDE中无法成功运行程序。
  • 在开发过程中,开发人员一般会调用很多现有的类库,这些类库不仅数量繁多,而且版本也千差万别。要想让程序正确执行,我们必须要够引入合适的类库。
  • 在软件开发完成后,开发人员还要对软件进行一系列测试后才能让产品上线,但是需要测试的代码有许多,手动一个一个测试会严重影响产品迭代的效率。
  • 产品在发布之前,开发人员需要将代码进行打包,并上传到相应的云端。人为控制这个过程会很繁琐,同时也极易出错。

对于上述的问题,我们希望能有一个工具帮我们解决,于是项目自动化构建工具就应运而生了。

项目自动化构建工具的作用

  • 进行依赖管理
  • 自动化测试、打包、发布的过程

Gradle的组织形式

在Gradle构建中有两个基本的概念,分别为项目(project)任务(task),每个构建至少包含一个项目,项目中包含一个或者多个任务。

项目(project)

一个项目代表一个正在构建的组件(比如编译代码,将代码打包成一个jar文件),当构建启动后,Gradle会基于build.gradle实例化一个org.gradle.api.Project类,并且能够通过project变量使其隐式可用。

任务(task)

对于之前提到的构建需求,我们不难看出:

  • 每个构建需求都需要实现特定的功能,比如在构建过程中需要控制类库的版本,对代码进行编译等。
  • 不同的构建需求之间有前后的依赖关系,比如测试过程必须是在代码编译后才能进行。

于是,Gradle定义了任务(Task)来组织构建的过程。任务是指实现最小的工作单元,不同的任务通过构建一个有向无环图来表示任务之间的依赖,具体过程如下图:
Gradle入门_第1张图片

项目实例

整体介绍

Gradle入门_第2张图片

对于一个项目来说,主要进行项目依赖控制的文件是"build.gradle"。这个文件在根目录下必须存在,用于对整个项目进行配置。对于子模块,如果需要进行自动化构建的话,那么对应的文件夹下面也需要包含build.gradle的文件。

创建任务

Gradle入门_第3张图片
Gradle中所有的任务都是通过task定义的,每个任务实现了一种功能,我定义的这个任务实现了创建文件夹的功能。
同时,任务之间可以依赖,通过使用dependOn来依赖其他的任务。这个依赖表明需要在声明依赖的位置执行对应依赖的任务。

构建的生命周期

主要包含三个阶段,分别为初始化,配置,执行

初始化阶段

初始化所有参与到构建中的项目。可以理解为这个阶段主要确定哪些模块需要参与到构建中(比如只有上图的model模块参与到构建中),哪些任务需要包含到构建中(任务可以定义多个,并不是所有任务都需要执行,所以需要确定参与到构建的任务)。

配置阶段

生成task的依赖顺序以及执行顺序,根据配置代码来生成,在任务的定义中,除了动作代码(doFirst,doLast)以外的代码叫配置代码。

执行阶段

执行动作代码。


在构建的过程中,gradle还提供了钩子代码,钩子代码是指在构建的每个阶段执行结束后可以插入的代码。比如我需要在初始化阶段后给用户提示初始化完成,那么我可以在下图Hook的位置插入代码,输出一定的提示信息。
Gradle入门_第4张图片

你可能感兴趣的:(gradle)