00:00
好,那么这个演示完了以后,我们这个工程就可以给它先关掉了。接下来我们看哈,还有一些理论上面的,哎,这个其他核心概念,我们要补充说明一下。首先一个呢,就是生命周期。哎,大家其实从这儿呢,可以非常直观的看到啊,呃,我们在没问这个选项卡打开以后,你甭管是project还是model里边都有这么一个子项叫life cycle,这就是生命周期,这里边我们看到有什么clean呀啊,Validate compare taste等等哈,有很多。那么嗯,这就是生命周期里边的各个环节。呃,当然了,这里边呢,并没有把所有的环节都列出来啊,没有把所有的环节都列出来,这只是列出来我们常用的就是哎,主流的一些个生命收集的环节,或者说呢,可以暴露给我们,呃,程序员可以供我们来进行操作的。然后呢,说。这里边儿我们一定要去这个,呃,有这样一个意识说这需要解释一下,为什么ma呢,为什么要定义生命周期这样的一个概念。
01:08
哎。啊,这时候这个原因是这样的哈。其实根本目的呢,还是为了提高我们构建过程的自动化程度啊。为什么定义了生命周期,就能提高这个构建过程的自动化程度呢?是因为哈,就是说每个生命周期呢,呃,它会有好多个环节,哎,好多个环节,那么你不管呢,是从这个生命周期的哪一个环节下的命令啊,我在这儿下的命令,它都是从最开头这个位置开始执行。啊,也就是说呢,你比如说呢,在这儿我们有呃。哎。12345啊,假设这个生命周期有这么五个环节,你下的命令呢是五,他会从一开始把前面这些都执行了。你下的命令是三,它就从一开始执行到三。哎,所以说你下达任何一个环节对应的命令,它前边的这些操作呢,不用你操心,不用你去重新做啊,他都会替你去做了。
02:08
这就是生命周期的核心要义。哎,所以说我们其实对生命周期呢,大家作为初学者,我们就理解到这个程度就够了,接下来呢,我们是呃,详细的再带,带着大家呢来看一看,也是为了在在这个核心要义这个点上来帮助大家呢,加深一下印象就可以了啊。这是一个纯理论的一个东西。我们呢,一共定义了三个主要的生命周期啊,分别是clean set和default。Clean呢,当然就是清理,哎,就是我们用的m vn clean那个命令啊,它里边对应的就是clean clean生命周期里边的clean clean这个环节。Set呢,它就是我们的这个生成站点啊,它用的是这个set。生成什么站点呢?它会把我们整个这个妹这个项目哈,哎,就是把你的工程也好,是你的model盾也好,它把它看成是一个项目,然后呢,把它里边的呃,项目的介绍呀,开发人员呀,哎,把它的这个我们所依赖的呀,依赖的信息呀等等哈,全部都抽取出来,生成一组静态页面。
03:16
哎,这一组静态页面呢,已经已经可以构成一个,哎,对我们这个项目进行简要说明的一个站点了,哎,所以说这个这个生命周期的环节呢,就是干这个用的啊。这个吧,如果我们说呢,咱们没有做到说项目管理的这个层次哈,这个级别我们只是用,没来做依赖和构建管理的话,这方面我们还用不上啊,所以这个咱也就不演示了,提一下就得了,诶呃,它里边的环节什么pres set set post deploy,很很很明显,这是在生成站点之前生成站点,生成站点之后,这是部署这个站点啊。呃,最多的环节的啊,环节最多的就是我们default这个这个生命周期,这是我们最主要的构建过程,你看里边有validate generate sources process resources generate resources process resources compare等等啊,不一个一个念了,这都啥意思呢?Validate是先检查一下这个最基本的,这个我们作为main工程来说呢,你的各方面结构呀,语法对不对?
04:18
Generate sources,这是生成这个源码啊,其实这源码当然是我们写的,不是它生成的啊,就是它会做一些个呃。他会做一些个读取吧,啊然process做一些处理,Resources啊,就是我们的资源,这里边你看resources呢,它对应的是我们的Java目录。Src下边Java目录啊,Java目录放我们Java的源程序嘛,源码嘛。这个resources呢,它对应的是我们resources这个目录,这里边儿放的是我们的配置文件啊。然后呢,Process resources啊,也是去处理这个资源文件,Comp呢就是编译,哎,对主体项目呃。
05:03
这个呢,编译的是呃,主目录下的源代码。也就是漫目录下载源代码。哎,目录下的源代码,然后呢,Process。嗯。这些是处理这里边编译好的这些类吧,啊,然后呢,这个不一个一个去说了啊,你看这个就是测试下边的,就刚才这一套,然后在这儿,这不就是呃,在测试目录下边再来一遍,哎,你看从从这开始啊,这些呢都是针对我们闷目录来操作的,然后从这开始呢,这些呢,这不都是针对我们测试目录来操作的,测试目录呢,编译好了以后,是不是就可以用test这个环节呢,来执行这个执行测试了啊对吧。测试完了以后呢,下边他就可以去,呃打包,这是准备打包,这是打包啊,然后后边这个是。
06:03
嗯。这个是隐私道执行这个安装是吧,最后这个是几个这个部署啊。呃,Deploy是啥意思呢?将最终的包复制到远程的仓库啊,这个就是,其实我们后边讲到ne的时候,我们会看到使用deploy命令可以把这个加包呢部署到我们的。远程库啊,部署到我们的ne私服上,哎,以让其他人员与项目。呃,共享就是说你就是其他其他呃。就其他开发人员共享就行了啊,不用写这个与项目。然后呢,或者哎,就前边这是一个功能,后边是一个功能说部署到服务器上运行这个吧,其实是需要借助一些这个其他的插件啊,或者说呢,你借助cargo这个插件,而cargo这个插件呢,是把这个它的部署web项目的web外包的这个目标绑定到了这个deploy这个呃环节上。
07:09
啊,所以说其实deploy环节本身并没有这个功能啊。嗯。我这给家补充一下啊啊,去借助插件啊,例如这个卡go行啊啊呃,这里边我们需要知道呢,这各个各个生命周期啊,这三个生命周期呢,他们彼此是独立的。这就是为什么啊,我们说,呃,你生命周期里边呢,你就是执行任何一个环节对应的命令,它前面的都会自动执行到,为什么clean clean没有,哎,我们clean,你看我们有时候执行这个代码是这样的MVN。Clean啊,比如说隐私什么的啊。那你说自动执行隐私到前边clean clean难道不能自动执行吗?诶,不能啊,因为clean clean呢,和我们这个默认的生命周期呢,他们不是同一个生命周期,所以这clean呢,给我们自己写上啊,但是你同一个生命周期的就不用写了,你不用说我先执行个test,然后再执行个呃嗯,执行个package拿出来啊在这。
08:16
这个没有必要,你执行package里边本身就包含test了,你执行test里边就包含前面这些编译了啊。这个我们可以咱们来这个这个这个咱们一起来观察一下啊,比如说我们执行一下这个隐私洞。观察一下我们这个打印的日志。嗯,你看在这儿呢。这个呢是resources。它对应的是我们,呃,应该是。应该是这样的一个环节啊,这个时候他这这个呀,是插件和目标的形式,哎,插件和目标的形式啊,它这儿呢,而我们这边显示的是这个生命周期的环节,他们这个从名称上来讲呢,会有一点这个差异哈,他们不是。
09:01
严格来讲不是一个概念。哎,然后这个时候啊,插件和目标,我们接下来就说啊,生完生命周期,咱们就来说插件和目标。哎,这是resources处理这个资源文件,你看这是comp执行这个编译test resources处理这个测试的资源,Test comp编译测试的程序,执行这个。执行这个测试啊,但我们现在没有提供测试类,所以它现在没有什么测试可以运行,然后这打包啊,因外部工程打的是一个挖包。哎,然后呢,接下来的话,Install执行这个安装是吧?哎,安装你执行的是安装,但是它会把安装前面的操作全部都给你执行到,只要是同一个生命周期的就可以。啊,就是这么个意思。
我来说两句