乐趣区

关于gradle: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)来组织构建的过程。工作是指实现最小的工作单元,不同的工作通过构建一个有向无环图来示意工作之间的依赖,具体过程如下图:

我的项目实例

整体介绍

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

创立工作


Gradle 中所有的工作都是通过 task 定义的,每个工作实现了一种性能,我定义的这个工作实现了创立文件夹的性能。
同时,工作之间能够依赖,通过应用 dependOn 来依赖其余的工作。这个依赖表明须要在申明依赖的地位执行对应依赖的工作。

构建的生命周期

次要蕴含三个阶段,别离为 初始化,配置,执行

初始化阶段

初始化所有参加到构建中的我的项目。能够了解为这个阶段次要确定哪些模块须要参加到构建中(比方只有上图的 model 模块参加到构建中),哪些工作须要蕴含到构建中(工作能够定义多个,并不是所有工作都须要执行,所以须要确定参加到构建的工作)。

配置阶段

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

执行阶段

执行动作代码。


在构建的过程中,gradle 还提供了钩子代码,钩子代码是指在构建的每个阶段执行完结后能够插入的代码。比方我须要在初始化阶段后给用户提醒初始化实现,那么我能够在下图 Hook 的地位插入代码,输入肯定的提示信息。

退出移动版