| |
|
开发:
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多模块管理-三种方式(动力节点版) |
先声明,作者非动力节点工作人员,写此篇文章是为了自己复习,若能帮到大家也是一件喜事,如果大家有能力的话可以去视频那里给个三连。涉及侵权请联系作者删除,谢谢。 目录 首先,无论是哪一种方式,作为父工程必须删除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。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |