实战Gradle——第1章 项目自动化介绍

本章内容

  • 了解项目自动化的好处
  • 了解不同的项目自动化
  • 了解构建工具的特点和结构
  • 探索构建工具实现的利弊

1.1 没有项目自动化的日子

  •  IDE完成大部分工作。开发人员用IDE编写代码、浏览代码、实现新功能、编译代码、重构代码、单元测试、集成测试,每当有新的代码改动,开发人员需要按下编译按钮,如果IDE没有报错并测试通过,开发人员会把代码提交到版本控制仓库,其他人员就可以从仓库中拉代码使用啦。IDE是非常强大的开发工具,但是要完成以上提到的任务,却有个问题,那就是每个开发人员需要安装配置一套IDE工具,而且还要注意编译、运行环境以及工具的版本等问题。
  • 代码只在我的机器上工作?我们会经常遇到这么一个场景,我们从版本仓库拉下一份代码去编译运行,不幸的是编译报错,通过错误信息定位问题,原来是另一个开发人员忘记提交了一个代码文件。
  • 集成测试是一场灾难。前端和后台按照计划进度各自完成开发任务,可等将项目集成部署到测试环境,之前的欢呼声迅速消失——前端和后台集成后,功能无法正常运行。
  • 版本测试低效。每一次开发人员向QA交付测试版本时,都会出现以下重复场景:每个开发人员都将代码提交,然后将最新代码拉到本地,用IDE构建项目然后向QA交付测试版本(如果上天保佑,这期间不会出现问题),随后QA会经过数周的艰辛测试。
  • 部署成功不易。部署项目,必须要配置基础架构和运行时环境,数据库中要准备种子数据,监测项目的运行状态等等,虽然这一系列操作都有计划可依,但都是通过手动操作来完成的,这就引入了不可预知的问题。

 

1.2 项目自动化的优势

        项目自动化取代了简单、重复的手动操作,提高部署、发布效率,杜绝人为错误,改进了开发的工作流程。

1.2.1 阻止手动干预

        手动执行生产和交付软件的过程即耗时也容易出错,软件开发过程中的任何一个步骤都可以且应该自动化。

1.2.2 取代重复的手动操作

        软件的构建其实遵循一个预定义的有序的步骤,自动化构建通过脚本来定义这些步骤,如果有人需要执行这些步骤,只需像点击一个按钮那么简单,即可获取到执行结果。

1.2.3 使构建便携

        自动化构建不需要特定的操作系统或特定IDE才能工作,自动化构建是可执行的命令行,它允许你在任何你想要的机器上运行构建。

 

1.3 项目自动化类型

        可以按需自动化构建项目,也可以在特定时间或某个事件发生时去构建。

1.3.1 按需构建

        典型场景用户在自己的机器上触发构建,VCS管理构建定义和源码文件,这种构建一天中一般会运行多次。

实战Gradle——第1章 项目自动化介绍

1.3.2 触发构建

        如果你想及时、快速了解项目的健康状态反馈,了解你的源码编译有没有错误或者单元测试有没有没有失败,那么触发构建是你最好的选择。

实战Gradle——第1章 项目自动化介绍

1.3.3 计划构建

    在特定的时间间隔或特定时间点构建。

实战Gradle——第1章 项目自动化介绍

触发构建和计划构建通常被称为持续集成(CI)

 

1.4 构建工具

1.4.1 什么是构建工具 

        构建工具以可执行的、有序的任务(task)来表达你的自动化需求,每个任务就是一个工作单元。

  有向无环图(Directed Acyclic Graph)

        任务以及它们之间的依赖可以用有向无环图来描述(有向无环图常常被用来表示事件之间的驱动以来关系,管理任务之间的拓度),有向无环图有两个要素:

  • 节点:即构建工具的任务。
  • 有向边:表示节点之间的关系,即构建工具的依赖。如果一个任务依赖其他一些任务,那么在执行这个任务之前,要先执行那些依赖任务,因为这个任务的执行依赖其他任务的输出。

        每个节点都知道自己的执行状态,节点(任务)只能执行一次。

实战Gradle——第1章 项目自动化介绍

1.4.2  构建工具解析

        构建工具中有几个主要的构建组件,我们需要掌握每个组件的职责以及它们之间的交互机制。

    构建文件

        构建文件包含构建所需的配置,定义外部依赖(如第三方库依赖),还包括实现某个特定目标的模块说明,这个说明是以任务及任务之间的依赖来表示的。

    构建的输入和输出

        某些任务会接收一个输入,然后执行一系列步骤,产生一个输出;某些任务也许不需要输入,也不产生输出;而一个在复杂依赖关系中的任务,有可能会使用它依赖任务的输出作为它的输入。

    构建引擎

        构建引擎在运行时处理构建文件,解析任务依赖,设置好执行所需的全部配置,将构建文件翻译成构建工具能够理解的内部模型;而一旦内模建好,引擎就会按照按照顺序去执行一系列任务。

实战Gradle——第1章 项目自动化介绍

    依赖管理器

        依赖管理器用于处理你在build文件中声明定义的依赖,从依赖仓库中将依赖的库拉到你的项目中使用(这里的依赖只的是外部依赖)。依赖仓库可以使HTTP服务器或者本地文件系统。

实战Gradle——第1章 项目自动化介绍

 

1.5 Java构建工具

    1.5.1 Apache Ant

         参考网址:http://ant.apache.org/

    1.5.2 Apache Maven

        参考地址:http://maven.apache.org/

    1.5.3 下一代构建工具Gradle

转载于:https://my.oschina.net/kun123/blog/847979