IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Maven多模块管理-三种方式(动力节点版) -> 正文阅读

[Java知识库]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为新旧版区别

旧版添加新模块

新版添加新模块?

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

三、第一种方法

最终的结构如图所示:

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

(1)建立父模块maven-parent

(2)删除src

(3)packing里面的war改成pom

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

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

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

(5)子模块的pom文件

大家都发现了,当我们添加了子模块后,比普通的模块多了<relativePath>标签,就是父模块的文件位置,为了检验模块间的关系,我们又建立了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变成了:

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

(7)此时的模块关系为

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

1、统一修改版本号?

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

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

2、优化

在父模块中添加<dependencyManagement> </dependencyManagement>来加强管理子模块?

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

这时候我们只需要在子模块的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

(1)建立子模块

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

?此时模块maven-parent的pom

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

(2)作用

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

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

它的模块结构长这样

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

六、总结

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

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-12-24 18:20:30  更:2021-12-24 18:22:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:44:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码