Gradle教程——(一)项目自动化介绍

——《实战Gradle》中文版学习笔记

1、简述

有效的项目自动化是促使软件成功交付给终端用户的关键因素,而Gradle的核心能力就是提供一种易于理解且强大的工具,从端到端自动化你的项目。

2、项目自动化介绍

  • 2.1 项目自动化的好处

  1. 防止手动计入
  2. 创建可重复使用的构建
  3. 让构建便捷
  • 2.2 项目自动化的类型

  1. 按需构建
    用户在自己的机器上出发构建,而使用版本控制系统(VCS)来管理构建定义的版本和源代码文件是常用的方法。
    在这里插入图片描述
  2. 触发构建
    为了能快速得到项目健康程度的反馈,即了解是否源代码能够无错误地编译,是否有单元测试或集成此时失败,以及反馈软件中存在的潜在缺陷,此类型的自动化通常是在向版本控制系统中提交代码时触发。
    在这里插入图片描述
  3. 预定构建
    一种基于时间的程序调度方案(在UNIX操作系统背景下,也叫作定时作业),它在特定的时间间隔或某个具体时间运行。
    在这里插入图片描述

3、构建工具

  • 3.1 构建工具介绍

    一个可编程的工具,能够使开发者以可执行和有序的任务来表达自动化需求。
    在这里插入图片描述
    每个任务都代表着一个工作单元,其执行顺序是非常重要的。
  • 3.2 构建工具的剖析

  1. 构建文件
    构建文件包含了构建所需的配置信息、定义外部依赖,例如第三方类库,还包含了以任务形式实现某个特殊目的的指令和它们的相互依赖关系。
    在这里插入图片描述
    例如编译源代码、拷贝文件到目录以及组装ZIP文件这些任务,都可以定义在构建文件中。通常情况下,会使用脚本语言来表达构建逻辑,这也就是一个构建文件也叫作构建脚本的原因。

  2. 构建的输入和输出
    一个任务会接收一个输入,然后执行一系列步骤,最后产出一个输出。
    在这里插入图片描述

  3. 构建引擎
    构建引起(构建工具的可执行度)处理构建脚本中预定义的规则集,并将它翻译成为可执行的任务。
    构建文件的一步步指令或规则集必须被翻译成构建工具可以理解的内部模型。构建引擎会在运行时处理构建文件,解析任务之间的依赖,设置好执行所需的全部配置。
    在这里插入图片描述
    一旦内部模型建立好了,引擎就会按照正确的顺序去执行一系列任务。某些构建工具还允许你通过API去访问这个模型,以便在运行时获取构建信息。

  4. 依赖管理器
    依赖管理器用于处理开发者在build文件中声明的依赖定义,从工件仓库(例如,本地文件系统、一个FTP或者HTTP服务器)中解析它们,并使它们对项目可用。

    依赖通常是指外部依赖,一种JAR文件形式的可重用类库(例如,Log4j对日志的支持)。该仓库就像是以来的存储所,通过标识符组织和描述它们,例如名字和版本。
    在这里插入图片描述
    许多类库还依赖于其他类库,这叫作传递依赖。依赖管理器可以通过存储在仓库中的元信息自动地解析传递依赖,但一个构件工具并不要求提供这样的依赖管理组件。

4、Java构件工具

传统的面向Java项目的构建工具有两个:Ant和Maven。

  • 4.1 Apache Ant

    一个构件脚本由三个基本元素组成:一个project、多个target和可用的task。
    在这里插入图片描述
    构建脚本示例:
    在这里插入图片描述
  • 4.2 Apache Maven

在这里插入图片描述
Maven基于构建生命周期的思想,每个项目都确切知道有哪些步骤去执行构建、打包和发布应用程序,包括以下功能:

  • 编译源代码
  • 运行单元测试和集成测
  • 组装工件(例如,JAR文件)
  • 将工件部署到本地仓库
  • 将工件发布到远程仓库

在构建生命周期中每个步骤都称作一个阶段,这些阶段会被有序地执行。
在这里插入图片描述
依赖示例:
在这里插入图片描述
在这里插入图片描述
在运行时,声明的类库和它们的传递依赖会由Maven的依赖管理下载,保存到本地缓存中,这样你的构建就可以使用它们(例如,编译源代码)。Maven预配置从Maven Central下载依赖。接下来构建会从本地换从中重用已存在的工件,因此不用再连接诶Maven Central。Maven Central是Java社区中最流行的二进制工件仓库。
在这里插入图片描述

  • 4.3 Gradle

    集成了Ant和Maven的优势,弥补了其缺陷,可提供以下特性:
    • 具有表达性、声明式、可维护的构建语言
    • 标准化的项目布局和生命周期,但具有完全的灵活性和对默认值的完全可配置性
    • 拥有易用且灵活的方式去实现定制逻辑
    • 支持构建由多个项目组成的项目结构
    • 支持依赖管理
    • 能很好地集成和迁移现有的构建基础设施,包括能够引入现有的Ant构建脚本和可以将现有的Ant或Maven逻辑转换成其自身规则集的工具
    • 强调可扩展性和高效率的构建。

5、总结

项目自动化能帮助开发者消除手动操作介入的负担,能让你的团队鞥有效率,带你进入到一个一键式和故障安全的软件发布过程。

不同类型的项目自动化是不相互排斥的,实际上,它们是互相补充的。

项目构建工具是项目自动化的一个关键因素。它允许你生命一系列有序的规则,允许你在初始化构建时执行。依赖管理器是构建工具架构中的一个可选组件,它允许你生命项目正常运行时所需的外部库。

Ant提供了一种非常灵活且通用的方式来定义构建逻辑,但是没有对标准化项目提供指导或者有意义的默认任务,以便可以再项目中重复使用。他没有提供一个开箱即用的依赖管理器,需要自己去管理外部依赖。

Maven则正好相反,它遵循约定优于配置的原则,支持有意义的默认配置和标准的构建生命周期。Maven的内置特性支持对外部库和直接对Maven项目的自动化依赖管理。但Maven的败笔却落在定制逻辑和非约定项目的结构和任务的易扩展性上。

参考书籍:《实战Gradle》中文版,李建等人译

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

辰阳星宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值