Maven多模块管理-三种方式(动力节点版)

原视频:2020最新Maven教程-Maven进阶篇之Maven多模块管理_哔哩哔哩_bilibili

先声明,作者非动力节点工作人员,写此篇文章是为了自己复习,若能帮到大家也是一件喜事,如果大家有能力的话可以去视频那里给个三连。涉及侵权请联系作者删除,谢谢。

目录

一、多模块管理的作用

二、idea为新旧版区别

三、第一种方法

(1)建立父模块maven-parent

(2)删除src

(3)packing里面的war改成pom

(4)创建子模块002-maven-java

(5)子模块的pom文件

(6)出现子继承父,孙继承子情况

(7)此时的模块关系为

(8)模块搭建好的好处以及的作用

1、统一修改版本号 

2、优化

四、第二种方法

(1)建立子模块

(2)作用

五、方法三-混合搭建(用到了方法一和方法二)

六、总结


首先,无论是哪一种方式,作为父工程必须删除src文件和吧packing改成pom

一、多模块管理的作用

1、结构清晰

2、统一管理一个项目中多个模块版本号(特别是JDK和mysql)

3、后期容易维护

二、idea为新旧版区别

旧版添加新模块

Maven多模块管理-三种方式(动力节点版)_第1张图片

新版添加新模块 

Maven多模块管理-三种方式(动力节点版)_第2张图片

 少了add as module to,下面的用旧版的idea举例

三、第一种方法

最终的结构如图所示:

Maven多模块管理-三种方式(动力节点版)_第3张图片

首先我们建立一个空的项目工程,从该项目中

(1)建立父模块maven-parent

Maven多模块管理-三种方式(动力节点版)_第4张图片

Maven多模块管理-三种方式(动力节点版)_第5张图片

(2)删除src

Maven多模块管理-三种方式(动力节点版)_第6张图片

(3)packing里面的war改成pom

Maven多模块管理-三种方式(动力节点版)_第7张图片

(4)创建子模块002-maven-java

Maven多模块管理-三种方式(动力节点版)_第8张图片

若是旧版idea,parent那里选择001-maven-parent就行了,add as那个为空,意思是同级目录

若是新版的话,直接选none就行了,后期在手动添加和父项目的关系

(5)子模块的pom文件

Maven多模块管理-三种方式(动力节点版)_第9张图片大家都发现了,当我们添加了子模块后,比普通的模块多了标签,就是父模块的文件位置,为了检验模块间的关系,我们又建立了003-maven-web、004-maven-java-1、005-maven-java、006-maven-java,都按上面步骤来建立,继承001-maven-parent

(6)出现子继承父,孙继承子情况

这里001-maven-parent是父,002-maven-java是子、004-maven-java-1是孙

注意无论是什么时候,作为父模块都是由两个要求,去掉src文件和把packing里面改成pom

所以002-maven-java变成了:

Maven多模块管理-三种方式(动力节点版)_第10张图片

Maven多模块管理-三种方式(动力节点版)_第11张图片

此时004-maven-java-1的pom为  

(7)此时的模块关系为

Maven多模块管理-三种方式(动力节点版)_第12张图片

(8)模块搭建好的好处以及的作用

1、统一修改版本号 

当我们在001-maven-java添加依赖后,所有子模块都出现了这个依赖

Maven多模块管理-三种方式(动力节点版)_第13张图片

缺点也很明显,很多模块是不需要这个依赖的,如果也添加了进去就会显得很冗余

Maven多模块管理-三种方式(动力节点版)_第14张图片

2、优化

在父模块中添加 来加强管理子模块 

Maven多模块管理-三种方式(动力节点版)_第15张图片

此时每个子模块的依赖都是空的

Maven多模块管理-三种方式(动力节点版)_第16张图片

这时候我们只需要在子模块的pom文件里写想要添加的且父模块有的依赖

Maven多模块管理-三种方式(动力节点版)_第17张图片

 有人说这不是caodan吗,这不跟不用maven多模块一样吗,还弄得那么麻烦了,我一开始也是这样想的,但是后来我错了,大家发现没,这里添加的依赖跟平时有什么不一样,gav三个少了version版本号的控制,我们可以看到对于junit的版本号控制在001-maven-parent里面(如果你非要加version也可以,但是这样做会违背了用maven多模块的初忠)

Maven多模块管理-三种方式(动力节点版)_第18张图片

这样写有什么好处呢,一个是项目结构清晰了:告诉了别人,整个项目都是用xxx版本的依赖,一个是避免了因为版本号造成的冲突,例如模块003-maven-java用了mysql-5.1.9,005-maven-java用了mysql8.0.19,单个模块运行时候不会出现问题,但是当我们打包所有模块时候,模块间因为mysql冲突就会报错

四、第二种方法

最终的是结构这样的

Maven多模块管理-三种方式(动力节点版)_第19张图片

首先,我们建立一个项目选中maven,这点跟方法一不一样,方法一是一开始建立空的项目,而方法而一开始就建立新项目时候选中maven

Maven多模块管理-三种方式(动力节点版)_第20张图片Maven多模块管理-三种方式(动力节点版)_第21张图片

(1)建立子模块

我们在maven-parent模块下建立两个子模块maven-java-001和maven-web-001

Maven多模块管理-三种方式(动力节点版)_第22张图片

Maven多模块管理-三种方式(动力节点版)_第23张图片 此时模块maven-parent的pom

Maven多模块管理-三种方式(动力节点版)_第24张图片

声明了maven-java-001和maven-web-001为maven-parent的子模块,而maven-java-001和maven-web-001也是会声明maven-parent为他们的父模块

Maven多模块管理-三种方式(动力节点版)_第25张图片

(2)作用

 和方法一的作用一样,连产生的效果,缺点也一样,所以三个方法其实只是模块不一样

五、方法三-混合搭建(用到了方法一和方法二)

它的模块结构长这样

Maven多模块管理-三种方式(动力节点版)_第26张图片

建立002-maven-parent和003-maven-parent是用方法一来搭建,一开始建立一个空项目,然后再在空项目里面搭建模块002-maven-parent和003-maven-parent,然后再用方法二分别在两个模块中搭建各自的子模块。

六、总结

总而言之,只要是有子模块的,它的父模块就必须满足删除src文件packing里面填写pom。

你可能感兴趣的:(maven,java,开发语言)