00:00
好,下边我们继续再看。呃,第七个,第七个实验说完了啊,第八个。测试依赖的排除。啊,我们刚才说呢。这个依赖的传递啊。它对我们来说呢,是一个很大的福利啊,因为有了A,也因为有了依赖的传递性呢,我们在依赖价包的时候呀,并不需要啊,比如说啊,你在这儿一共需要导入100个价包,你不需要把这100个都写上啊,你就写这个个别的,比如说啊,我我这个ABCDEF哎,我就写这么个别这几个,他们替我们通过依赖的传递性,哎,把很多的这个别的包呢,给我们都导进来啊,这个这个就他们可以替我们倒很多,我们管理这个依赖呢,只是很简洁的管理这个最顶顶层的个别这几个就行了,所以依赖的传递性呢,是一个非常大的福利。现在呢,我们所要说的这个依赖的排除呀。
01:03
这个事儿。是干嘛呢,就是说要阻断我们依赖的传递。诶。传递不是好事吗?干嘛还要阻断呢?这里边儿我们跟大家说,这时候会有这么一个情况,我A呀,他去比如说依赖B啊,同时呢,A也依赖C,然后这个时候B呢。和C啊,他们依赖的是同一个架包的不同的版本,比如说呢D,哎,它依赖这个B呢,依赖的是D的,呃,0.1版本,C呢,依赖的是D的这个,哎,零点呃六这个版本举例的,那么如果你不管它,它会因为。借助妹的依赖的传递性,把这个D啊D这个价包它的0.1和0.6这个呢,都会传递到A,这相当于呢这个A呀。它既倒了0.1这个版本,又倒了0.6这个版本,那么这俩不同版本的炸包呢,他们要都导进来,如果相安无事的话,倒还好,倒没有什么的,咱也也就不管它了啊,就这这个就就还好,不报错就没事儿,但是呢,有的时候啊,这种情况下会导致驾包的冲突。
02:17
哎,那么这个时候怎么办呢?我们就需要哈,这两个,你看你要保留哪一个,哎,假如说呢。啊,我们选这个版本稍微高一点的吧,假设我们选择它,那么我们呢,就把这个给它排除掉,让这个D,哎,这个0.1这个版本呢,不要传递进来。就回到刚才这个啊,我们A依赖了,BB依赖的是这个0.1这个版本。A也依赖的CC,依赖的是这个0.6这个版本,那么我呢。就让A在依赖B的时候。不要把这个这个版本给传进来啊,我我我C呢,把这个D0.6这个版本给传递过来,那么这个时候呢,就是在A对B进行依赖的时候,做一个配置,把这个D呢给排除掉。
03:06
是在这儿做的啊,在这儿做了这样一个阻断。所以说呢,我们在这儿做这个阻断,大家想对对我们B依赖D有没有影响。如果你能够在这儿回答上来这个问题啊,我对我这个B对D的依赖呢,在这个部分啊,没有做任何的修改,所以说B依赖D是不会影响的啊,B依赖0.1这个D是不影响的,所以这个时候的话啊,哎,就是就是这样的一个逻辑啊,说明你刚才我说的应该能够理解。下边我们就实际来测试一下啊。怎么样去排除一个依赖哈。配置的方式呢,是需要我们在dependency里边哈,去配这个exclusions啊exclusion exclus里边呢配exclus。然后呢,只需要指定group ID和artifact ID啊,不需要写version啊,不需要version,那就是说不管是哪个版本的,只要符合group ID和artifact ID就都会被排除掉,不会被传递过来。
04:09
那么我们这个上哪儿配呢?那咱们就到这个对。在我们web工程你看啊。我们的PRO02这个外部工程啊,它依赖我们的PRO01的这个Java工程。Java工程呢?它依赖的是我们spring。Supreme court依赖common slogan。我们现在呢,就举这么个例子,我在二号的web工程里边,依赖一号Java工程的这个地方,哎,排除掉common slogan,让common slogan不要传递到外部工程这。啊,大家先明确我们要做什么,要在哪去做啊,我再说一遍啊,我们在二号的web工程里边配置对一号Java工程的依赖的这个地方。
05:02
去做一个配置。去排除掉common slogan,让common slogan呢,不会通过这一串啊,这个依赖的传递性不让它传递到二号的外部工程,这。啊,这就是接下来我们要做的这个测试,那么我们先找到啊,二号web工程依赖一号Java工程的这个位置。我们都全部都关掉,重新打开啊,找到二号外部工程,打开它的po文件。然后呢,它对我们一号的Java工程的依赖在这儿,我们就在这儿呢,配置一个对common slogan的排除。配置依赖的排除,这个呢叫exclus。表明呢,你看这是复数形式,它里边配exclusion呢,可以配好多。
06:10
哎,这个exclusion呢,是单数形式的啊,它是具体的一个排除的信息。配置具体排除信息啊排除,呃,就是让我们common slogan。不要传递到,哎,我们当前的工程,当前工程是谁呢?零二我们这个web。不要传递到这儿,哎,然后这里边儿呢,我们你记住ma问的世界里边啊,我们去找到任何一个架包呢,靠的都是它的坐标,然后呢,这个坐标呢,我们现在在这儿啊,就是说指定group ID和artifact ID就行了,不需要指定version。
07:10
哎,所以说呢,我们把这个。Slogan哈,它的。ID和if ID给它找出来,这个上哪去找呢?哎,就在根目录下边就有啊,Commons log commons log,诶我们这个是啊,对不用版本不用管啊,就随便找一个就行。CTRLC。Group ID。Artifact。我们看一下啊,这个是1.1.1哈,这个版本,这个呃,这个版本。会不会?
08:00
不一样哈,最好是给他们ID和if ID。CTRLC最好,咱们还是用这个准的这个。应该没错啊,因为他们在这个仓库里边的目录是一样的啊,目录是一样的,这个这个就肯定是一样的。这个配好了之后啊,你看原来呢,我们在二号web工程这能够看到commonlogan,哎,那说明就传递过来了,我们再重新去执行一下这个依赖的分析。哎,你看spring呢,它下边的commonlogan就不显示了。对吧,这说明这确实是就没有传递过来啊,这个就是我们可能exclus啊,这个依赖的排除它就起作用了。那么说我们再看你现在呢,是在我们web工程。依赖Java工程的地方。啊呃,在这去配置的依赖的排除,那么Java工程依赖的spring扣啊,Spring扣依赖这个common slogan Java工程里边去看这个数形结构会不会有影响呢?哎,我们去看一下啊。
09:18
MVN的。这个排除呢,又没在这个Java工程这儿去排啊,就是这个,所以说Java工程这儿没有受到任何的影响啊,这是。你没有没有没有在这儿去对他去做手脚嘛,没有改它嘛,他肯定这是不受影响的,对吧?啊哎,这是我们这个意外的排除啊,这基本上呢,我们是用这种方式呢,是去解决哈这个加班冲突的问题。那么关于价包冲突呢,其实哈,我们在后边这个最后一章哈,你会发现啊,我们在这个呃,生产实践这个地方会专门有一节呢,是专门的去讲这个价班冲突的啊这个呢,这个我们先呢,就是说呃。
10:10
先在这儿先提一下啊,先在这儿先提一下,让大家先知道在这个地方我们有这样的一种这个方式,可以来进行这样的一个配置啊,然后后边的话,我们到最后啊,咱们在第三个锦囊里边最后一章,再详细的再去系统的说怎么解决这个加班冲突的问题。
我来说两句