3.什么是Gradle

  • 概述

Gradle是一个开源的自动构建工具,它有足够的灵活性去构建任何类型的软件。下面是一些高级特性的概述。

  1. 高性能

Gradle避免执行非必要的工作,只运行输入或者输出有变化的任务。你也可以使用构建缓存确保重复使用上一次任务执行的输出,甚至是来自不同的机器。Gradle还实现了许多其他的优化,开发团队一直在持续完善。

  1. 基于JVM

Gradle运行在JVM上,你必须安装JDK,这对于熟悉Java平台的用户非常友好,在构建逻辑中,你可以使用标准的Java Api自定义任务类型和插件。在不同的平台上很容易运行Gradle。Gradle并不限制,只构建JVM项目,它甚至支持构建原生项目。

  1. 约定

Gradle借鉴了maven,创建了许多通用类型的工程,例如:Java项目。通过实现约定,很容易构建。对于很多项目,你可以使用非常少的构建脚本,应用合适的插件。但是这些约定并不限制你,Gradle允许你覆盖他们,添加你自己的任务(带有很多自定义特性)。

  1. 扩展性

你可以很容易扩展Gradle,提供你自己的任务类型甚至是构建模型,

  1. IDE支持

多个主要的IDE,允许你导入Gradle构建,并且同他们进行互动。Android Studio, IntelliJ IDEA, Eclipse, and NetBeans. 

  1. 洞察性

Build Scan(Getting started with Build Scan™ for Gradle and Apache Maven™ | Gradle Inc.) 提供了运行构建的扩展信息,你可以用来识别构建问题。这能非常方便的帮助你识别构建的性能问题。如果你需要询问意见的时候,你可以把Build Scan共享给其他人。

  • 你需要知道的5件事

Gradle是一个灵活并且强大的构建工具,当你开始使用Gradle的时候,给人的第一感觉是令人望而生畏,但是理解了下面核心的概念,将使Gradle变得易于接近。不知不觉中,你将会熟练这个工具。

  1. Gradle是一个通用的构建工具

Gradle允许你构建任何软件,最值得注意的制约因素是依赖管理,目前只支持Maven、lvy-compatible repositories、文件系统。

你只需要做很少的工作,就可以创建一个构建。Gradle通过添加一个内置layer、利用插件预构建功能很容易构建通用类型的项目。你甚至可以创建、发布自定义插件,来封装你自己的约定和构建功能

  1. Gradle核心的模型是基于任务

Gradle的构建模型是有向非循环的任务图谱(Directed Acyclic Graghs),这也意味着构建的配置本质上是一些任务的集合,并把它们的依赖连接在一起,创建一个有向非循环图谱,一旦任务图谱被创建,Gradle将确定,哪些任务需要运行,然后执行它们

几乎任何一个构建过程,都可以抽象为一个任务图谱,这也是为什么Gradle拥有强大灵活性的原因之一,任务图谱可以通过插件和你自己的构建脚本来定义。

任务由3部分组成:

1) Actions -- work的一部分,例如:复制文件,编译源文件

2) Inputs -- values,files,directories that actions use or operate on

3) Outputs -- files and directories that actions modify or generate

实际上,Actions、Inputs、Outputs是可选的,取决于任务需要做什么,例如标准的生命周期任务不需要任何actions,他们只是简单集成了多个任务,作为规范。

  1. Gradle 拥有几个固定的构建步骤

Gradle评估、执行构建脚本分为3个步骤,理解这个是非常重要的

1)初始化

设置构建的环境变量,确定哪个项目参与其中

2)配置

组建并且配置构建的任务图谱,然后确定哪些任务需要运行,遵循什么样的顺序

3)执行

配置阶段结束后,运行选中的任务

上面3个阶段是Gradle构建的生命周期。

大多数设计良好的构建脚本,都是由声明式配置组成,而不是一些逻辑性的命令。如果使用声明式配置,在配置阶段,可以进行评估。即便如此,许多这样的构建也有任务动作。

  1. Gradle可以通过多种方式进行扩展

如果你只使用Gradle捆绑的构建逻辑来构建你的项目,那将是非常美妙的一件事。但是那基本是不可能的。大多数构建都有一些特殊的要求,这也就意味着你需要添加自定义构建逻辑

Gradle提供了几种机制,允许你扩展它,例如

1)自定义任务类型

当你想要构建做一些当前存在任务不能做的事情,你可以简单写一个你自己的任务类型,最好把自定义任务的源文件,放到 buildSrc目录下或者打包一个插件,接下来你可以使用自定义任务类型。

2)自定义任务Actions

在任务执行前(后),你可以添加自定义构建逻辑

3)在projects and tasks 额外配置

Gradle允许你在project 或 task 添加你自己的属性,然后你可以使用你自己定义的actions 或者其他的构建逻辑。额外的配置信息甚至可以被应用在tasks上

4)自定义约定

Conventions 是简化构建的一种方式,用户可以很容易理解并使用。你可以写你自己的插件提供约定,他们只需要在相关的地方配置默认值

5)自定义模型

Gradle允许你把新的概念(除去 tasks, files,dependency configurations)引入到构建当中,在大多数语言插件中,你可以看到这个。他们大都把source sets的概念添加到构建当中。

  1. 构建脚本针对API进行操作

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值