00:00
没问的,第二个功能是作为构建管理工具,哎,那你肯定会奇怪,说什么叫构建,这个概念你可能是陌生的,但是呢,相应的操作其实你每天都在做,因为大家想你即便写一个最简单的程序,你也一定有一个Java源程序啊,一定有一个先得写一个Java类,哎,这个Java类呢,就是我们的源程序。这个源程序呢,它要想运行的话,一定得得经过这个编译,编译成class自解码文件才能够去运行,那么编译呢,它就是构建的一个环节。啊,编译是我们构建操作的其中一个环节。如果我们写的是一个web工程的话,那么你想除了要对Java源程序进行编译的话,还需要呢,把这个工程去打一个挖包,把这个袜包呢给部署到我们的tomcat上边,哎,把tomcat跑起来,这样的话才能够运行一个外部工程,所以说编译打包部署啊,这些呢,都属于我们构建的操作里边的。
01:08
啊,都是属于我们构建的操作。那么呃,我们在看这个,呃ma啊,它作为构建工具有什么功能之前哈,我们先要去注意一下,我们实际去体会一下吧,说我们以前没有注意过这个有构建的操作,下边我们就来这个仔细的观察一下。我在这儿呢,提前准备好了一个,哎,一个很简单的一个外部工程。在这里边呢,有一个Java类叫person,有一个方法叫get name,然后呢,这个类呢,诶,到GSP页面上边,我们去创建它的对象啊,去调它的get内方法,用这个表达式显示在页面上啊,呃,这个这个语法细节你都不用管它啊,这个都不用管它啊,就是说这是一个很简单的一个外部工程,那么这个外部工程当你刚创建好,刚写完这些代码的时候呢,其实是没有这个out目录的,我们现在呢,来把这个out目录给它删掉啊,当然我们这儿说一下这个we部工程没有用到ma啊,没有用到ma还只是我们以前的方式创建的我们最基本最简单的web工程。
02:11
然后下边呢,我们就想把它给跑起来,要跑的话呢,我们就需要到我们汤姆看的这儿把它给部署上,哎,那么你看这个部署的操作啊,这里边这个字呢。啊,蓝底黑色,这有点看不清楚啊,这又是一个袜包啊,这是一个袜啊,这个袜包呢,已经是第它自动的替我们生成出来的,或者说已经打包的操作已经打包好了,然后呢,放到他们CAD上也都已经放好了,你看这不就是idea它替我们去做的这个打包和部署的操作嘛,哎,下边这我个人习惯上把这个呃,Application contacts改成一个简短的名字,哎,然后呢,这边啊,这边相应的这些设置好以后,只要把他们看的跑起来。我们这个web应用呢,就一起就运行起来了,那么大家仔细注意观察这边,诶是不是生成了新创建的一个out目录呀,在这个al目录里边呢。
03:10
有有artifacts啊,这样两个目录,Artifacts里边我们就能够看到。A person.class它就是我们person。啊,这就是我们person这个Java源程序编译以后得到的自建码文件,哎,然后这个web目录呢,它下边哈有webfer也放到这儿了,哎,然后呢,Web infer下边放到classes啊,我们编译好的直接码文件就放到classes目录下边了,你想我们真正运行呀,在tomcat上边真正运行呢,它其实哈运行的是这个目录,或者说呢,我们放在tomcat上边那个袜包呢,袜包里边儿的结构就是这个目录的结构。诶,所以说呢,你会看到啊,其实它真的不是我们这个工程的结构啊,真的不是我们这个工程的结构。
04:09
所以说呢,在这儿大家啊,我们以前可能没有太留意过这件事儿,但是现在呢,你要去哎,去注意一下了,我们这个Java源程序哈,它所做的编译的操作啊,生成这个结构,最后打一个袜包,把袜包放到tomcat上面,这些呢,就是我们所谓的这个构建的操作。啊,这些就是我们所谓的构建的操作。你以前之所以没有注意的话,是因为有人替你负重前行啊,哎哎,就替你把这些事儿都做了,就像我们在家啊,就爸妈照顾啊,这个衣来伸手,饭来张口啊,你也不用去想这个饭是怎么做的,衣服是怎么做出来的是吧?从哪来的?哎,你你就是只管去享受啊,但有一天呢,你离开了父母的身边了,这些事儿需要你自己去料理的时候啊,你就意识到了啊,这些事儿还是,哎,挺让人操心是吧?啊,没有那么简单,哎,所以说呢,我们现在就面临这样一个情况,我们只是在idea里边去写这些代码呢,其实是远远不够的。
05:15
为什么这么说呢?我们还需要哈。这只是我们做的本地开发啊,这只是本地开发,哎,我们下边呢,咱们来对照一下我们整个项目开发的一个生命周期哈。哎,本地写代码,本地跑起来以后,你去测试,然后呢,去看看这里边儿有没有bug,有bug去改,改完了以后再重新测,什么时候你自己确认,你本地确认没有问题啊,你自己确认没有问题的时候推送到远程,哎,当然了这个呃。呃,你除了你自己本地测试以后,还有测试工程师也需要去测试啊,咱们先不考虑这些事儿啊,我们就说呢,假设测试已经通过了哈,说我们推送到远程的这个版本控制服务器上边,推送到远程库里边啊,为什么要推送到这儿呢?因为你实际开发的时候不是你一个人呀啊,程序员有好多啊,我们都要去,相当于呢,是在版本控制中心呢,把所有的代码都汇总到一起了。
06:19
然后呢,如果说我们搭建了一整套自动化部署啊,自动化持续集成的这样一套机制的话啊,我们可以在远程库呢,来创建一个钩资程序,我们当有新的代码推送到远程库,就会触发这个钩子程序,诶钩子程序呢,就会负责呢来通知我们持续集成的工具,持续集成的工具这个时候就可以来调maven来帮我们去做打包啊,啊在打包之前呢,得编译啊,甚至呃,编译完了以后呢,调测试啊,测试确认没有问题,去打包啊,打包,然后生成挖包,下一步去部署啊就这些事儿呢,全部都是可以自动来完成的。要想自动来完成,一方面要借助持续集成的工具,另外一方面呢,这个构建的操作啊,是持续集成工具来调用我们微问呃,来完成这个构建的操作。
07:06
所以你想呢,Idea能帮我们完成这个构建,就是在你本地开发的时候来帮助我们啊,那当你脱离了本地开发的环境,哎,到服务器端,哎,到我们进行这个项目要进行部署上线的时候,它是你不可能说在服务器端你也去装一个ID啊。这个也也不太现实。啊哎,所以说呢,就如同你在家有父母照顾你啊,吃饭穿衣啥的都很方便,但是你去上大学了,这些事儿就需要你自己照顾自己了,哎,所以这个时候的话,我们想哈。我们以前没有留意到过的这个构建操作。啊,它其实呢是很重要的,没有这样的构建操作,我们后续的这个部署啊,后续的这个呃。打呃,编译打包部署上线啊,这些操作啊,你就你怎么去做,难道你自己手动去做吗?手动去做当然也可以,但是咱就拿编译来说哈,你一个项目里边呢,可能成百上千的类。
08:12
编译,难道你自己一个一个拿Java c,你自己手动的一个一个去编译吗?这都不现实啊,而且它不仅仅是编译的这个事儿。啊,还不仅仅是变异的事儿,你这个打包的操作啊,你怎么去做,哎,所以说呢,肯定啊,我们,而且互联网项目它更新又非常的频繁,我们又经常的需要去啊,有新的功能需要去发布,这个时候的话肯定我们是需要。想办法搭建一整套自动化的啊,部署上线的这样这样一套机制,甚至部署以后呢,部署到我们docker容器里边啊,让docker呢通过K8K8那啊我们K8S呢,给它管理起来,然后呢,它这个时候就能够实现一一实现一个动态扩缩容的效果啊,访问量高峰期的是高峰期的时候,K8S呢负责去复制出来啊,瞬间复制出来好多个docker容器啊,新的doer容器,哎,去分摊这些负载,哎等这个呃,高峰期过去以后呢,把多余的容器就会释放掉啊,非常的高效,非常的智能,哎,动态扩缩容的这样一套机制啊,这就是我们云原生的。
09:12
所以说呢,在这儿哈,我们我们以前呢,只是接触过本地开发啊,只是在这个呃,四角高墙限定的一小块天空里边啊,但其实呢,天空是很广大的啊,哎,我们还需要呢,呃,使用到我们这个妹妹啊,在服务器端考虑如何配合持续集成的工具啊哎,实现一整套的自动化的部署上线啊,然后运行这样一套这个机制。当然这一部分呢,可能即便是听我这么说了呢,大家也还是会觉得有一定的距离,毕竟大家没有亲身经历过,没有亲自上手去操作过,没有关系啊,我们在这儿呢,只是跟大家呢啊提提出这样一个概念啊,先有初步有这么一个构建的这样的一个意识,一方面呢,我们学习ma的过程当中啊,会比较多的用到这样的构建的命令,再一个呢,大家在以后的学习当中,甚至于说到了这个开发的,呃,真是到了公司里边啊去参与开发。
10:16
你慢慢的就会接触到我们后边说的这些啊,所以说很多事儿呢,是需要你慢慢去体会的啊,需要你慢慢去体会的,哎,我们现在提到这构建啊,可能呢,你需要用很长的一个周期才能够真正彻底的啊,从这个理论到这个实际操作,彻底的去理解它。啊和学习很多东西,很多时候就是这样的啊,我们人生里边又何尝不是这样的啊,妈妈这两个字你可能是最早啊学会的,这个说的话就是谩骂这两个词,但是你什么时候能够去理解这个词的这个含义是吧,也可能需要哎一个很漫长的一个人生的经历,甚至说你得自己去为人父母以后才能够理解,对吧?哎,所以说我们这个构建呢,哎,你如果现在呢,觉得听着云山雾罩啊,或者说啊,就是似懂非懂的也没有关系,这个很正常啊,这样一个新的概念,有的新的概念一说你就能明白,有的新的概念呢,你可能需要在以后的呃,学习和实践的过程中呢,不断的再去强化你的这个理解啊,才能够这个。
11:18
呃,才能够理解的真的非常的透彻啊。所以总的来说呢,我们在这儿给大家说哈。结论就是啊,Maven呢是一个必须要用的工具啊,Ma是一个必须要用的工具,一方面呢,我们需要借助ma来管理规模庞大的架包,另外一个呢,是脱离idea啊,脱离IDE环境啊,这这我没有写错啊,Idea是IDE的一种,就是我们开发辅助的工具啊,脱离IDE环境以后,执行这个构建操作的话,也需要执行,也需要这个专门的工具啊,所以这个ma至少有这两点是我们必须要用的。
我来说两句