原视频: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、后期容易维护
旧版添加新模块
新版添加新模块
少了add as module to,下面的用旧版的idea举例
最终的结构如图所示:
首先我们建立一个空的项目工程,从该项目中
若是旧版idea,parent那里选择001-maven-parent就行了,add as那个为空,意思是同级目录
若是新版的话,直接选none就行了,后期在手动添加和父项目的关系
大家都发现了,当我们添加了子模块后,比普通的模块多了
这里001-maven-parent是父,002-maven-java是子、004-maven-java-1是孙
注意无论是什么时候,作为父模块都是由两个要求,去掉src文件和把packing里面改成pom
所以002-maven-java变成了:
此时004-maven-java-1的pom为
当我们在001-maven-java添加依赖后,所有子模块都出现了这个依赖
缺点也很明显,很多模块是不需要这个依赖的,如果也添加了进去就会显得很冗余
在父模块中添加
此时每个子模块的依赖都是空的
这时候我们只需要在子模块的pom文件里写想要添加的且父模块有的依赖
有人说这不是caodan吗,这不跟不用maven多模块一样吗,还弄得那么麻烦了,我一开始也是这样想的,但是后来我错了,大家发现没,这里添加的依赖跟平时有什么不一样,gav三个少了version版本号的控制,我们可以看到对于junit的版本号控制在001-maven-parent里面(如果你非要加version也可以,但是这样做会违背了用maven多模块的初忠)
这样写有什么好处呢,一个是项目结构清晰了:告诉了别人,整个项目都是用xxx版本的依赖,一个是避免了因为版本号造成的冲突,例如模块003-maven-java用了mysql-5.1.9,005-maven-java用了mysql8.0.19,单个模块运行时候不会出现问题,但是当我们打包所有模块时候,模块间因为mysql冲突就会报错
最终的是结构这样的
首先,我们建立一个项目选中maven,这点跟方法一不一样,方法一是一开始建立空的项目,而方法而一开始就建立新项目时候选中maven
我们在maven-parent模块下建立两个子模块maven-java-001和maven-web-001
声明了maven-java-001和maven-web-001为maven-parent的子模块,而maven-java-001和maven-web-001也是会声明maven-parent为他们的父模块
和方法一的作用一样,连产生的效果,缺点也一样,所以三个方法其实只是模块不一样
它的模块结构长这样
建立002-maven-parent和003-maven-parent是用方法一来搭建,一开始建立一个空项目,然后再在空项目里面搭建模块002-maven-parent和003-maven-parent,然后再用方法二分别在两个模块中搭建各自的子模块。
总而言之,只要是有子模块的,它的父模块就必须满足删除src文件和packing里面填写pom。