一则故事介绍构建工具

故事大概是这样的:

你是一个Java开发工程师,需要开发一个实现某个功能的Java库(Jar文件),以供其他团队使用,开发流程大概由下面几步组成:

1.实现功能代码
2.实现测试代码(好吧,你喜欢TDD更好)
3.编译源代码和测试代码
4.运行测试(前提是有测试)
5.拷贝Class文件到目标目录
6.打包Class文件为Jar文件
7.发布到远程仓库(Repository)

除了开发feature和写测试,其他的部分是一个完全可自动化的过程(希望有一天,机器可以完全代替人写代码,那我们就可以都喝西北风去了),然而,在没有构建工具之前,这些工作是由谁来做?IDE。一个功能强大的IDE,以上的步骤都只需要按几个按钮,即可完成。

问题来了,本来整个开发过程只需要你一个人,项目经理提了好多新的需求,于是任务的难度和复杂度的加剧,项目经理理解你难处,于是给你加人,你的团队从一个人变成了三个人或者更多。这时,你肯定会需要代码集成,这个问题好解决,使用版本控制,无论是中心式的SVN还是分布式的Git,总之可以既可以解决版本问题,也解决代码集成的问题。

这种情况下,在没有自动化构建时,你肯定会遇到下面几个问题:

1.在我的机器上可以跑
2.从版本控制check out代码,发现编译不过或者运行时报错,有人少提交了代码文件(比如:Spring上下文配置的修改)
3.有个人提交代码时没跑测试,导致其他人check out代码后,测试跑不过
4.版本发布时,由一个人来check out所有代码,在他自己的机器上编译打包,结果部署到服务器上运行不了 …

导致上面这些问题出现的原因都有两个特点:

1.手动介入
2.重复任务

我们开发人员要关注的应该是编写实现功能的代码,至于编译编译代码,拷贝文件,运行测试,上传文件等一切重复和可自动化的事情都应该交给机器去做,因为人是容易犯错的。

构建工具就是来解决以上的这些问题,那么,什么是构建工具?

一个可编程的工具,能够以可执行和有序的任务来表达满足需要的自动化过程。

注解:

TDD:Test Driven Development 测试驱动开发

results matching ""

    No results matching ""