07|第七课:Maven继承、聚合的实现

一、历史回顾

(一)、依赖性传递

A.jar ---> B.jar ---> C.jar

要使 A.jar ---> C.jar:当且仅当B.jar依赖于C.jar的范围是compile。

这里总是需要盯着B这里的范围总是compile,但是这里不想在盯着,不管<scope>是什么都A.jar都可以依赖到C.jar,这就需要继承了。

二、Maven继承、聚合

(一)、Maven继承

1、继承:A ---> B,则A可以使用B的所有依赖

9438859-3d40ce5e12f918e7.jpg
继承关系

2、继承实现步骤

a、父工程打包方式需要是:pom

b、父工程的依赖需要写在<dependencyManagement>中,如下面代码所示:

9438859-ee61330aceab352b.jpg
a和b的代码实现

c、子工程的pom.xml配置

(a)、添加<parent>标签

(b)、在<parent>标签中,加入父工程坐标(GAV)。如果子工程GAV这部分内容有与父工程有重复的地方,子工程可以省略(因为可以从父工程继承而来)。

9438859-5df16a5278e15d30.jpg
代码实现

(c)、在<parent>的<relativePath>标签中,当前工程的pom.xml到父工程的pom.xml相对路径。

9438859-5a31c58760fb8e02.jpg
代码实现

(d)、在子类中需要声明:使用那些父类的依赖(声明:只需要GA)

9438859-6a194d9d0b733196.jpg
代码实现

3、案例

例:Son项目继承Parent项目的junit依赖

Parent项目:

pom.xml的配置信息:

9438859-151af7649e2ed69e.jpg
代码实现

Son项目:

pom.xml的配置信息:

9438859-c94ac0f845d87a7e.jpg
代码实现

(二)、Maven聚合

前面的课程中讲的Demo2依赖Demo1的内容复习一遍,这里是Maven2依赖Maven1。

1、一个项目依赖另一个项目。如下图所示:

9438859-a101f5d488c10741.jpg

2、总结

a、Maven项目能够识别的:自身包含、本地仓库中的

b、Maven2依赖于Maven1,则在执行时:必须先将Maven1加入到本地仓库(install),之后才能执行Maven2。

c、如果Maven2依赖很多Maven1这种情况的项目,那install就很多了。以上前置工程的install操作,可以交由 “聚合”一步搞定

3、案例

例:Maven2依赖Maven1,具体实现(这里就不详细了)

4、聚合的使用

a、建立总工程:聚合的配置只能配置在(打包方式为pom)的maven工程中

b、在一个总工程中配置聚合:modules

9438859-1e259c69f45c07df.jpg
这里的总工程的例子

注意:clean命令是删除target目录,并不是清理 install 存放入的本地仓库。如果想清理本地仓库,通过GAV到本地仓库直接手工删除文件夹即可

总结:

a、配置完聚合之后,以后只要操作总工程,则会自动操作该聚合中配置过的工程。

b、配置聚合之后,不用管聚合的顺序。

猜你喜欢

转载自blog.csdn.net/weixin_34293902/article/details/87592978
今日推荐