00:00
好胃口,你已经饱了是吧,你欠我一顿饭钱,那么在这儿我们说哈,这个是步数,然后作为整个这个项目来说啊,作为整个这个项目来说,哎,你看这个是构建哈,其实我们理解构建可以是这么三个层面,一个是纯Java代码啊,Java代码就是一个编译的问题,然后外部工程啊,它有一个编译,然后这个部署的过程,部署呢,其实就是把编译的结果哈,拿到这个,拿到这个服务器上。哎,当我们需要通过浏览器访问Java程序时,就必须将包含Java程序的外部工程编译的结果拿到服务器上指定的目录目录下,并启动服务器才行,这个拿的过程呢,就叫做这个部署啊,当然是肯定得先编译后部署,诶这是一个,这是一个对比的一个图,然后作为一个实际的项目来说啊,在实际项目中整合第三方框架外部过程中,除了有Java程序,GSP页面、图片啊等等,还包括第三方框架的架包,各种各样的配置文件,所有这些资源必须按照正确的目录结构部署到服务器上,项目才能够运行。哎,所以说综合起来来看啊,构建的就是以我们编写的摘va代码、框架配置文件,国际化等其他资源文件,GP页面啊等等这些东西呢,作为原材料生产一个可以运行的项目的过程啊,这个就是这个构建。
01:42
这个概念呢,我们费了好大的劲儿呢,才给大家这个解释了这个概念啊,所以说这个概念呢,需要你慢慢的去体会,慢慢的去理解,为什么说这个东西,为什么这个东西比较这个费劲哈,就是因为我们自己平常操作的时候呢,我们没有特意的去做这个构建这个事儿,因为你想哈,构建呢,这里边哈,你说编译也好,你说这个部署也好,我们都不是我们做的,都是这个ID,这个开发环境替我们做的,我们写一个写一个类,这个类呢,写好以后呢,我们也没有去编译成这个ecls,是给我们自动编译的,大家有没有注意到这个有过这样一项,在project下面呢,有一个build autoaticly build其实就是构建啊,当然在这呢,主要指的是编译,Autoaticical里就是自动的啊,所以说它是自动的变异的这个勾你千万你别给它去掉,然后你要是这个它不是自动变异的话,那就有的时候呢,你带。
02:43
代码写的是对的,但是它用的呢,是你原来以前编译的,它没就不会及时的编译的啊,哎,所以说这个eclips是自动编译的,然后跑的时候呢,我们也就是直接在这儿run as run server就跑了,然后这个时候其实他他替你去做了这个部署啊,部署也不是你做的,所以这个时候我们对构建的这个感觉呢,并不是很,并不是很明显,这就是以前呢,咱们引入这个命的时候呀,以这个构建这个角度呢来引入,因为它本身就是一个构建工具啊,可是从构建这引入呢,我们体会不深啊,所以说咱们前面呢这些啊,主要是从架包的这个角度来引入这个命的它的作用的。
03:26
好嘞,那么下边我们还需要说一个事儿哈,这个构建本身呢,我们大概齐呢,知道它什么意思了,这个东西大家有一个感性认识就行啊,有感性认识就行,呃,那么我们下边还得给大家介绍一下构建的构建过程中的各个环节,这个吧,我们也需要有这个了解一下,因为这个牵扯到我们后边用这个main的命令,是跟这些环节呢,是有一定关系的啊,第一个环节呢叫清理,咱们呀先把它罗列出来再解释,第一个叫清理,第二个呢叫编译,第三个呢叫测试,第四个叫报告,第五个叫打包,第六个叫安装,第七个叫部署,一个一个解释一下啊,清理清理是清理什么呢?就是将以前编译得到的旧的。
04:27
诶,这个class子解码文件删除,为什么要删除这个旧的解码文件呢,为下一次编译做准备,哎,那么这个,那么这个时候编译呢,就好理解啊,就是将这个Java源程序,诶编译成这个class自解码文件测试测试,其实现在大家也做过很多这个测试的是吧,我们我们做测试一般我们就写个什么呀,我们写个油腻的是吧,那其实这种测试呢,只是我们自己手动的去做的测试,我们这个在构建环节里边哈,特别是这个在自动化构建的过程当中呢,我们这个通常呢,说的是这个自动的测试,就是你把这个解油腻的程序提前准备好,让这个。
05:27
的工具呢,它自动去调我们这些测试的程序,诶这个自动去测试有什么好处呢?我们举个例子,你这个现在开发的这个项目哈,假设呢,有这么十个位置是保证呢,是必须正确的,你就说你再增加什么新的功能,新的代码,这十个位置呢,也都要保证它一直都是这个正确的,不能因为你增加了新的功能,它这受到影响,那么这个时候呢,可能你自己每一次更新了这个代码以后,手动的去做这个测试,容易有遗漏,那么我们就提前把这些测试程序都准备好,让这个微问这样的工具呢,去自动去调这些程序啊,自动去做这测试,它就不会有遗漏了,机器最擅长的就是干这种特别枯燥特别无聊的重复性的工作啊,然后呢,正因为它是自动的这个测试啊,自动测试就说自动调用,我们只有你诶来进行,呃,自动。
06:27
调用使用你的程序啊,就说这个行了,既然它是自动调用的啊,那他就得告诉你这个测试的结果是什么,这个测试的结果呢,就是这个测试的报告,诶,这个测试程序执行的结果,哎,然后呢,下面有一项呢是打包。打包是什么意思呢?其实对于我们来说哈,就是这样一个情况,就是这个动态外包工程打的是挖包Java工程,你才是架包,Very good Java工程打架包,哎,所以Java包是咋来的呢?其实它原来就是一个Java功能啊,然后这个安装呢,是我们这个mini的一个特定的概念啊,你要不用ma的话,还真就没有安装这个事儿,这个这个ma里边安装是什么意思呢?就是将这个。
07:27
呃,打包得到的文件,呃呃,复制到仓库中的这个指定位置,哎,那么这个时候这个仓库哈,我们后边这个没问很重要的一个概念,它的价包都在仓库里边,然后呢,这个部署啊,这个部署。部署呢,对于我们来说哈,最重要的就是将这个动态web工程生成的这个外包,哎,这个复制到。
08:04
Sovet容器的指定目录下,使其可以运行,哎,就是部署,那么这些概念呢,跟我们一直以来认为的哈,呃,总体上基本上是一致的,就是细节呢,会有一些这个我们需要去调整一下的啊,这个我们在学妹妹的过程中呢,大家就能够感到它会有一些这个细微的差别,总体上呢,是跟我们这个一直以来理解的是一样的,嗯,这就是构建过程的各个环节,那么正因为它有这么多环节,就导致呢,我们人要是手动的来做这个构建的操作吧,就会比较的费劲儿,当然了,这个费劲儿吧,我们现在感觉到不明显,还是那句话,由于eclipse等等啊这样的构建,这个我们的开发环境他已经嗯都开发的挺不错的了啊,所以说,我们对这些方面的体会并不明显。
09:05
但是呢,在这个,嗯,像viva刚产生的时候,你想就是这样的构建工具是十几年以前产生的,那个时候呢,这个IDE呢,还不是像我们现在这样的这个这么智能,所以说呢,它就有这样一个需求,就是自动化的构建,这个呢,我们也是看一个小故事哈,诶托马斯,托马斯是一个那个火车的那个动画片里吧,那个是吧,哎,他这是一个开,现在他是一个开发人员了,像往常一样早早的来到了公司,冲好一杯咖啡进入了自己的邮箱,很不幸,QA小组发来了一封邮件,这个QA是QA小组是干嘛的呀?哎,因为QA是质量保证的缩写,那软件产品质量怎么保证呢?就得是靠测试人员,所以说QA小组就是测试人员的小组,那么作为开发人员。
10:05
来说呢,当然了,其实我想啊,开发作为开发人员来来说呢,开发以外的各个部门的人找我们肯定都没有什么好事,测试人员找我们肯定是代码有bug了,产品经理找我们肯定他要改需求是吧?哎,然后这个老板CEO找我们肯定是催我们,嫌我们活干的慢是吧,HR找我们,估计我们就离这个走人不远是吧,找涨工资涨工资好吧,你也可以这么认为,所以说好像各个部门对我们这个成员都抱有这个深深的恶意是吧,反正QA小组给我们发邮件肯定不是发月饼是吧,肯定没有什么好事啊,报告了他昨天提交的模块的测试结果有bug,那好吧,那反正也不是第一次是吧,他进入他的自己的环境,那这个时候呢,他得先确认一下,确实有这问题啊,他得这个自己哈去这个去编译,他为了运行运行程序哈编。
11:05
给打包部署到服务器上,按照邮件中的操作路径进行测试,这又一个概念叫操作路径,这个吧,还是了解一下哈,什么叫操作路径呢?就是说白了哈,大白话说就是在这个界面上呢,你先点哪个后点哪个。先点哪个后点哪个,因为有的时候呢,你按照正常的这个步骤去操作的时候,这个程序呢,是没问题的,但是测试人员呢,他必须呢,必须去按照,就是必须去,呃能够把所有尽可能的一切不正常的操作的方式去也得去测试到,避免他一些,因为用户嘛,怎么操作都有可能啊,而且他还得去准备各种各样奇奇怪怪的这个测试用例,这些数据,所以说这个测试这工作呢,可能干时间长以后呢,这个思维方式都跟我们正常人不太一样,不知道大家有没有看过一个段子,说是一个测试人员去酒吧喝啤酒,他怎么点呢?他先点一杯,再点两杯是吧,再点三杯,四杯,五杯,然后后边有人跟帖说他应该是他应该进行临临界边界值的测试是吧,看他这个最大这个能够点多少位是吧,然后进入这个酒吧的这个方式呢,你先这个正面走进去是是是是。
12:23
这个一次,然后你在这个倒退着走进去再试一次,你再穿着雨衣再倒退着进去再再试一次,那你想他这个测试程序,它就是用这样的思维,他得用各种各样非常规的这个数据和操作来进行这个测试,所以说他才能发现问题啊,是吧,因为他们是这个可以说最后最后一道把关的程序员测试,你也只是常规的测试,没有问题你就提交了啊,你看然后这个托马斯呢,确认了哦,这个地方确实是有问题啊,他也不得不承认,好吧,那就咱们开始尝试修复这个bug,那么你想修复这个bug呢,你得先分析啊,你得去去琢磨是因为什么产生的,去找到解决方案,这个也是要花时间的,那么当他差不多有眉目的时候呢,已经到了午饭时间,这一上午就过去了。
13:11
下午继续工作,嗯,Bug呢,很快就修正了,因为他已经知道是问题出在哪了。所以多马斯接着对模块进行重新进行编译、打包部署测试之后确认没问题,回复QA小组的邮件,这一天呀就过去了,明媚的阳光化作了美丽的晚霞,可是他觉得生活并不像那么美好呀,因为这一天什么都没干,就是调了一个bug啊,这其实这这这这还算好的呢,有的时候啊,大家想这个项目很复杂的时候,这个bug肯定是不是也很难调啊,因为他牵扯的这个太多了啊,牵一发而动全身的啊,所以说我们才要求模块化,为什么这么要求这么这么对我们来说非常重要啊,你模块模块化程度很高的时候,它都互相之间有联系,都会互相有影响,你何况你不注不注意这个更更,这个就更严重了,所以就是很多这个不懂技术的人,他们老是觉得你们这些程序员啊,天天拿那么高的工资,每天也没见你们干什么活,调一个bug调一个星期是吧,他们就他们就恨得就牙痒是吧。
14:18
啊,其实成员很多时候白天的工作进行开会了啊,白天这个其实跟跟别的部门在一起,这个效率并不是很高,特别是我们成员是特别怕打扰的,你正在想这个bug,你记你你电脑上那个画面呢,是你看到的这些,但是你脑子里边的那个已经想的哈,你想的那个画面已经是一面墙了啊,你因为你牵扯的很多嘛,你正在这个正在聚精会神,正聚精会神正在响什么的时候,别人过来这个替哥们过来问你说这个我们中午吃什么,就这一句话,你整个这一面墙的画面全都消失了,然后你就就崩溃了,是吧,所以我们我们这样的工作是特别怕这个打扰的啊,特别怕打扰的,来我们来看一看托马斯这一天的这个工作啊,这一天的工作,他首先收到QA小组的邮件,啊,编译打包部署测试啊,然后分析问题,编码,再编译打包部署测试。那么。
15:18
我们就发现哈,这个在整个这过程里边呢,我们标红色的这一部分是重复的,那么老是这么重复性的做这个活呢,就不太好啊,我们程序员是最不喜欢做这个重复性的工作的啊,比如说一个工作呢,重就是重复做200次,可能一个小时呢就能够解决,但是成员呢,我们非要用四个小时写一个脚本,嗯,用四个小时写一个脚本啊,将来大家这个以后学了Linux就知道了啊,在Linux里边编那个shell脚本,就是类似于我们Windows里边的那个BAT那个,呃,批处理文件,对啊,这个东西现在我们没有学,觉得好像挺挺挺那个挺神秘的,你学了以后就是很easy的东西啊,后边咱们也会给大家讲,呃呃,Linu克斯的这个基本命令,诶成员我们是最恨这种,这个呃,重复性的工作,所以说其实构建自动化构建的工具呢,你像make这样的工具哈,最早的那些。
16:18
就是自己去写那些脚本啊,其实其实就是大概就是自己去写那些脚本,所以说像make克那样的工具呢,封装的程度比较低啊,Ma的话,它基本上就是自动化程度比较高了,所以说我们就需要有这样的工具来代替我们中间的这个环节做这个自动化的构建,当然了这个故事我们也只是这个听一听啊,这个对我们来说呢,这个有距离感,因为我们用eclipse呢,这些事儿呢,都也相当于呢,也不算完全自动化,也都这个半自动化了,所以这方面感觉不是很明显啊,我们只是提一提有这么一个概念啊,大家知道自动化构建指的是什么就好了。
我来说两句