00:00
来,我们下面说这个依赖的范围啊,大家打起精神来啊,这个概念呢,不是特别的好理解,大家看我们这个,看我们这个依赖,那么就是这是我们hello friend的这个依赖信息,它里边对unit的依赖呀,在scope这个标签里边配的是T对友们hello的这个,这个依赖呢,Scope这个标签里边配的是compel,那么这个呢,就是配的是依赖的范围,Scope啊,就是范围的意思,那么这个依赖的范围呢,我们常用的有三个取值,一个是一个是,一个是,那其实它还有其他的取值,但是呢,我们也用不上,咱们就别管了,咱们呢平常用的就这三个,咱们就把这三个搞清楚就已经很不错了。
01:00
Compare,那我们说认识这个依赖的范围吧,我们得从三个方面,哎也不是不一定是三个哈,从这么几个方面来这个认识,就是说这个对主程序是否这个有效,这个对测试程序,呃是否有效,以及呢,这个打包,呃是否参与这个打包,以及呢?哎对其实的话也就是这么三个三个方面啊,来看这个各个依赖的这个范围,呃,为什么要看对主程序和测试程序是否有效呢?就是说你看哈,我这comp和这个test他们分别呢,其实compile哈,它对应的是我们这个主程序。因为你看我们src下边有闷有taste啊,哎,所以说我们这样边画个图哈,这个程序的结构,我们这个没问程序的结构,这是我们没问程序,它有这么两个部分,哎,一个是这个闷,一个是taste。
02:27
这个面问程序它有这么两部分,然后这个依赖呢,依赖哈,我们说呃,有这个comp范围的依赖,有这个taste的范围的依赖,诶的依赖,有这个test的范围的依赖。从这个实际的例子上来说呢,你看我这个G啊,它是一个测试范围的依赖,这个hello呢,它是一个编译范围的依赖,那么我想大家应该能猜到哈,能猜到一部分吧,就是说这个这个只作为这个测试范围的依赖,你说他对这个men这个主程序来说,你觉得它有没有什么用啊。
03:23
哎,没有什么用,对吧,确实是没有什么用,因为它就是负责测试的嘛啊,所以主程序呢,其实用不到这个测试的这个范围的,所以说主程序呢,它对于这个case范围的这个依依赖呢,它是看不到的,它是不可见的,而我们这个compel范围呢,它对主程序必须是可见的啊,因为你看这个实际的例子就是这样,我们在hello这是主程序里边的,它会用到hello,那么主程序呢,需需要用到用comp这个范围导入进来的这个依赖,所以说这个箭头是一定要画的,那么问题是我这个comp范围对T的这个范围,它是不是可见的呢?它也是可见的啊,因为因为这个g unit测试程序里边需要去调用这些,需要去进行调用嘛,我们看一下这个测试的程序,诶,它里边呢,需要去用这个hello friend。
04:23
那当然它里边也可以去用这个哈,你看这不hello吗?它可以导进来。啊,这个它没有用到哈,但是这个是,但这个是导进来,这个是完全没有问题的,但是呢,你说我们这个CTRLC,我们这个hello friend里边,我们要是也导一下这个kiss的话,这就是在主程序里边,我们去找导这个测试这个范围,这个依赖,如果是这样的话,他其实他就编译就通不过了。大家看啊,Build failure构建失败了,哎,他说为什么失败呢?这有个错误,说程序包呢,这个all点不存在啊,这是一个。com,嗯,这个叫comple,这个怎么念,这个就是编译的错误是吧,编译过程中产生的错误,哎,这个时候你这个东西编译就已经过不去了啊,就谈不上运行了,所以说我们主程序呢,是看不到测试程序的,但是这个,呃,但是测试程序呢,是可以看到我们这个编译的这个范围的依赖的,所以这儿有这么一个图,这个是从程序的结构上来说的。
05:38
所以在这我们就可以这么写啊,对主程序是否有效呢?有效这compare范围哈,对主程序有效,对于我们测试程序呢,也有效,那么是否要参与打包,这个我们再具体的看一看,咱们把这个hello friend咱们去打个包,当然了,这个编译过不去,这个不行,把这个去掉。
06:08
给MVN的package打个包。我们就看看这个价包里边。哎,当然这个打不开了,嗯,多点一下,这个主程序呢,是要参与打包的,主程序里边呢,是参与打包的,但是测试的程序呢,其实你看测试的程序它是不参与打包的,这是这是一些辅助的信息啊,这是一些辅助的信息,测试的taste这个东西它是不参与打包的,不参与,当然这个compare范围哈,它是参与的,诶,那么test,嗯,我们说的是这个范围的依赖哈,Taste范围这个依赖,Provide这个范围的依赖,那么test范围呢,对主程序嗯,是否有效,它是无效的,主程序看不到case里边的东西,那么它对于我们这个测试程序是否有效,那必。
07:22
必须有效啊,它本身就是为测试服务的,是否参与打包不参与啊,Case的这个范围,它不参与打包,这个时候我们是compare和taste,它俩是这么对照着看的,对照着看的,下边我们再把这个provided和comp呢进行一个对比,那么这个时候对比呢,就不是从程序的结构的角度来对比了,我们comp和test是从程序的结构的角度来认识的,那么provided和这个comp呢,我们就从这个开发的阶段这个角度上来来来认识,诶你看。
08:07
比如说这是我们一个命文工程,嗯,这个是一个我们说哈,这个主要是一个外部工程,嗯,这个provide通常是为外部工程里边去添加的,这个外部工程呢,它得有这么几个阶段哈,嗯,首先呢,它得有这个开发这个阶段。然后他得有这个部署,然后呢,还得有这个运行。我们说这个开发的时候呢,他可能需要用到一些这个,嗯。
09:03
我们先拿这个compel这个范围这个来说吧,Comp范围这个依赖开发的时候呢,是需要有的啊,不然的话他找不到这个类,它就编译就出错了,我们箭头这样画,开发的时候呢,需要它,然后部署的时候啊,这个价包呢,也必须这个一起拿过去,运行的时候呢也需要。嗯啊嗯,这是我们说这个是开发呢,是有这样几个阶段。Comp范围的啊,因为这个你运行的时候呢,你是在服务器上面去运行的,这个服务器呢,是我们这个他们K的服务器啊,运行呢,当然得在他们K的服务器上去运行,他们K的服务器呢,有些API呢,是能够提供的,比如说这个SOAPIGSAPI它能够提供,但是comp范围的你单独依赖的一些特定的啊,你像我们这儿呢,Hello friend依赖的这个hello tomca就提供不了,所以说呢,部署的时候必须呢,把这comp范围的依赖也得这个部署到CAD上上面去啊,他他得参与部署,可是呢,可是呢,对于我们这个诶pro的这个范围的来说就不一样了。
10:32
Provide的这个范围的这个依赖哈,它是这样的,开发的时候呢,得要。因为开发的时候呢,他没有这个的这个支持,开发的时候没有的支,这写上啊吧唧诶然后呢,部署的时候呢,他会被忽略。
11:01
嗯,这个怎么写呢。诶部署的时候呀,就不要这个provide的这个范围的依赖了,哎,为啥呢?因为这个运行的时候呢,这个服务器可以提供有我们这个,哎服务器也就是我们这个serve容器提供,那既然人家so容器呢,能够这个提供了。那么你这个工程里边这个provide呢,就不能够这个,诶就不会这个就不要了,就不要了,这种这个依赖哈,通常是什么样的这个依赖呢?通常就是像SOAPI,比如说我们这举个例子啊,就是这个SOAPI点价,因为你想呀。我们开发的时候,开发的时候呢,你本工程里边哈,没有这个tomcat这个运行式环境,那么你需要用到solid的时候,你就得有这样一个架包,可是呢,当你这个工程啊,要在这个服务器上,服务器上面去跑的时候,人家服务器呢,是能够提供这样的这个API的,你呢就不要把你这个呢再拿过去了,你这个再拿过去呢,你这边也有服务器,这也有这两个呢,它就会产生这个冲突,诶所以这个时候呢,我们这个provide在部署运行的时候就会被这个忽略掉。
12:32
哎,我们把这两个呢,我们放在一块呢,这个对比着来看。这个咱们就放在这个下边这个吧,这个大家先先听这个呢,先有个感受哈,因为这个得实际的我们去用了这个,在没去创建了外部工程,有这样一个开发的这样一个过程以后,你才能够这个有进一步的体会,现在呢,你先先感受一下啊,所以这个prod的这个范围的依赖呢,它对主程序是否有效,这个呢是有效的啊,就是因为这个属于开发的过程中,他对测试程序是否这个有效,这个也是有效的,因为这也是,其实这也是属于这个开发的过程,那么最关键的呢,就是是否参与打包,哎,这个就不参与打包了,这是最关键的,因为你不参与打包呢,当然就不参与部署了。
13:39
啊,你部署的前提呢,是打打包,就是对于外部工程呢,就是放在这个袜包里边才行,那么你这个部署的时候呢,它部署的是那个袜包啊,那你既然在袜包里边没有,那么部署的时候呢,就当然也就没有它,我们说这个典型的这个例子就是serve API大下就是这样的东西,Case的这个呢,它典型的例子呢,是我们这个只unit,诶啊啊这个东西吧,现在我们只能是因为讲到这儿了,必须得把这个概念呢跟大家说一说,那么这个具体哈,这个呃,实际上我们这些东西都是能够看到的啊,他这个参与不参与部署呀等等这些,甚至于说你强行的给他部署过去他会产生冲突,这些我们都能够看到啊,但是现在呢,我们得一步一步的来,先给大家先介。
14:39
这样的概念,我们后边的话还会再在这个换别的角度,再进一步的来认识这些概念啊,先有这么个印象。
我来说两句