• 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进行操作

     

  • 相关阅读:
    学习最优化课程中的一些疑惑
    C- 动态链接
    单目标应用:基于麻雀搜索算法SSA的微电网优化调度MATLAB
    kafka3.4.x配置sasl认证
    基于weixin小程序新生报到系统的设计
    3.ubuntu20.04环境的ros搭建
    Redis技术总结
    curl verbose模式有什么用
    sam和mobilesam导出预处理的onnx
    windows 10 更新永久关闭
  • 原文地址:https://blog.csdn.net/li18230143817/article/details/126067916