00:01
然后呢,按照我们讲义的顺序呢,你看哈,下边应该是介绍这个,嗯,依赖的传递性,依赖的排除,统一管理版本啊,解决冲突等等这些呢,我们在图形化界面里边去去看,这些是一目了然的,我们现在在命令行里边呢,看这个很不方便,所以暂时呢,这一部分呢,我们一会儿再说啊,等我们能进了eclips里边去操作这个M的时候,我们再说,下边我们来说一下这个生命周期。13生命周期,哎配合这里边还有插件和目标这样的概念,说这个生命周期呢,是什么意思呢?哎,其实就是各个构建环节执行的顺序,各个构建环节执行的顺序,大家知道我们这个听歌哈,这个音乐播放的软件,它都支持这个顺序播放,随机随机播放,还有单曲循环是吧?哎,那你说咱们构建这个各个各个构建环节哈,这个顺序你说它执行的时候呢,它是这个按顺序,按顺序播放呢,还是随机播放,还是单曲循环呢?啊要单曲循环的话,就是不停的编译,不停的编译是吧,或者不停的报告,不停的报告是吧?哎,那。
01:34
那么我们说呃,这个各个构建环节之间呢,是有先后顺序的,因为呃你得先把旧的清理了,我才能够去做这一次的这个编译啊,呃,你把你编译以后啊,你编译了主程序,我才能够去执行主程序,你编译了测试的程序,我才能够去执行测试的程序,诶这个测试才能够执行,测试执行完了才会有报告,测试这个报告呢,诶一看报告没问题,才能够打包,打了包以后才能够安装和部署,所以说它这构建环节呢,是一环扣一环的,这个顺序呢,是不能够打乱的,哎既然不能够打乱啊,那么就必须得按照一个呃正确的顺序呢来执行。
02:18
哎哎,不能这个打乱顺序,哎,必须按照嗯既定的正确顺序来执行,那么这个ma文内置的这个正确的构建环节的执行的顺序啊,就是这个就是就是我们这个身命周期,那么这个生命周期呢,是在命in的核心程序里边定义的,定义了这个抽象的生命周期,哎具体呃,这个生命周期中各个具体阶段的各个阶段的具体任务是由哎这个插件来完成的,然后我们可以来说一下哈,关于生命周期呢,我们VIVO呢,有三个主要的生命周期,这个吧,咱们看一看就行了啊,这个看一下就行了,这个不是什么。
03:18
特别重要的另外有三套相互独立的生命周期,分别是clean life cycle default life cycle site life ccle这三套,那么这个clean很明显就是做清理相关的default,这是一个默认的啊,它是最重要的啊,主要的核心的构建过程都在这里边儿,这个site就是生成站点的,那么我们看看啊,Clean这个生命周期呢,包含三个阶段,一个是pre clean,一个是clean,一个是post clean,那pre clean呢,就是在清理之前做一些事,这是执行清理,这是清理之后做一些事。Set呢,也是pres set set和post set,那么这生成站点之前,生成站点和生成站点之后,这是部署那个站点,当然我们在这儿再插一句说生成站点这个是干嘛呢?这个就是把我们当前这个命令工程的一些信息,根据这些信息去创建,它会给我们自动生成一组HTR这个静态的页面,这个页面是直接打开就可以去看里边的信息的啊,所以说这个时候呢,它就是生成这个,呃,当前这个项目哈,这个信息的一个站点起这样一个作用的,这个命令呢,就是MVN空格S,因为这个命令吧,执行起来时间稍微有点长,咱们课上就不演示了,大家你感兴趣,你可以课后你自己去执行一下啊,这个咱们在笔记里边呢,咱们可以给大家写上。
04:46
嗯,而且这个命令呢,它。要是下载这个命令需要的那些假包吧,也挺多的啊,我们把这install这个写上啊,这个是安装第七个MVN的site生成战略,哎,这个咱们课上就不运行这个了啊,课后你可以自己体验一下,这个也不太重要,最关键的是default默认的这个生命周期,你看这里边有啥呢?
05:16
处理并复制资源文件啊,然后这个是编译,这是编译主程序啊,这是处理并复制测试的资源文件,这编译测试的代码执行测试打包,打包的准备打包,这个是安装,这个是部署,所以你看这个最主要的构建环节都在这个默认的生命周期里边,那么在这儿我们关键要说的是什么哈,就是这个构建就是生命周期的执行呢,它有这样一个特点,诶,微核心程序为了实现,或者说嗯,为了更好的实现自动化构建,按照嗯下面描述的特点,按照这样的特点执行生命周期中的各个阶段,什么特点呢?就是不。
06:16
笨,现在要执行生命周期中的哪一个阶段,我们这些就就叫做阶段啊,这是生命周期的阶段,你不管是执行哪一个阶段,都是从这个生命周期最开始最初的位置开始执行,哎,就是说呢,你看我要是想执行这个compel,我会从这开始执行到这儿,我要是想执行test compare,我会从这开始执行到test compare,我要是想执行这个package,我也是从这开始执行到这个package。所以说这时候你只需要下一个命令就行,中间这些过程呢,它会自动的去自动的就是从头开始,全都给你自动的去做,你不用去管这个中间的过程,所以它这个设计呢,就是为了实现更好的实现自动化,诶那么我们下边不妨来咱们来看一看哈,我们这个有一定的证据,比如说呢,我们来执行一个comp。
07:25
然后我们再摘取这里边的一些关键的环节,比如说呢,你看他首先做了这么一个操作,哎,笑死对了,这里边我们得写上哈,这是哪个命令,这个不用你记哈,就是你记了你理解就行了,这个是compel,这是这个这个命令,然后如果说我们执行的是这个case。
08:09
Taste是在comp compel的这个后面的,诶所以说这时候你看呢,这是一个。你看就是其实关键是看这个哈,你看这个是一样的,然后呢,下一步呢是这个comp。诶再下一个呢,这个叫resource resources,然后呢,这个叫compare,哎,然后呢,就执行这个测试,这就是执行测试,然后呢,下边这个呢,是测试的报告,这是测试的报告,这个咱们就不粘这么多了,我们这儿写上测试报告,诶然后咱们再执行一个打包这样的命令。
09:18
诶,你看这个首先是resources有坏。这个是命令。的age,然后呢,下边这个是哎,下边这个是taste消,哎,这个是taste compare。这是一个test。Test,然后下边这个是还是测试报告,诶测试报告,然后以后呢,最后一步是这个甲,所以我们就能够看到每一次呢,它都是从这个,哎,每一次它开始的位置呢,都是一样的,只不过呢,进行进行到哪呢,就看到看你这个命令是什么了啊,所以说大家关键的就是说你理解在这儿呢,它有这么一个特点啊,理解这么一个特点,每一个生命周期里边哈,它都是从这个最初的位置开始执行,一直执行到你指定的这个地方,所以说你要是,所以说你不用去人为的去关心我,我这个我在打包之前我得测试啊,测试之前我得编译啊,你不用去管啊,你你要想打包的话,你就直接下命令打包就行了,前面这些东西它会自动替你去做,这就是生命周期啊,所以这个呢,这个特点就是自动化。
11:00
它构建的一个也是一个重要的保证,然后呢,我们说这个跟生命周期相关的概概念呢,有这个插件和这个目标,这个怎么理解呢?我们说生命周期的各个呃阶段,诶,生命周期的各个阶段,嗯,仅仅它定义了要执行的这个任务是什么,哎,嗯,然后呢,由于这个任务是由插件来完成的啊,所以说各个呃阶段呢,和我们这个插件的这个目标是对应的。哎,各个阶段的这个插件的目标是对应的。然后这个相似的目标,哎,有这个同有这个嗯,特定的插件来完成,所以说你比如说哈,我们在这儿呢,有这样的两个阶段,一个叫compare,一个叫这个taste compare,当然了这个阶段呢,应该叫嗯,我们这样吧,这样来写哈,这个删掉。
12:23
哎,这个是生命周期的阶段,插件目标,这个是插件生命周期的阶段,我们就举例子啊,比如说这个compel。这是一个阶段,这个阶段呢,对应我们这个插件的目标哈,它也叫compel,它也叫compel,这个时候呢,他用的这个插件呢,这个叫compeler,编译者用的是这个插件,然后呢,你测试的这个编译,这是插件的目标,然后这个呢,是生命周期的这个阶段,我去。
13:08
诶,这是生命周期阶段啊,是这么描述的,这是插件的目标,然后插件呢,也还是它,因为同样都是编译嘛,同样都是编译啊,你编译主程序是同样是是是编译,编译测试程序也是编译啊,所以这个都是这个就是就是有这样的概念啊,就是这个是理论上面的。这个插件的目标呢,你可以认为哈,这个目标呢,是调用插件功能的一个命令,我们可以这么认为啊,就说这个。可以将这个目标看作调用插件功能的这个命令啊,这个是理论上定义的这个阶段啊,而这个这个目标呢,可以是具体来调用这个插件里边具体的这个功能啊,这些吧,是纯理论的东西哈,这个东西这个不用大家不用,不要把它当成这个负担,你能理解多少理解多少就行了,这是生命周期。
我来说两句