IDEA搭建Maven模块化项目的实现 今日热讯
目录
1.前言2. 软硬件环境3.项目搭建3.1.创建 SpringBoot 父项目3.2. 构建子项目centerdao3.3. 构建子项目centerweb4. 建立父子 Module 依赖4.1 删除不必要文件4.2.修改 Parent 项目 packaging4.3.修改子项目pom.xml 信息4.4.补充说明5. 项目继承关系6. 验证项目参考1.前言
为了更好地组织和管理项目代码。通过将一个大型项目分解成多个模块,每个模块都可以独立地编译、测试和部署,从而提高项目的可维护性和可扩展性。多模块项目,适用于一些比较大的项目,通过合理的模块拆分,实现代码的复用,便于维护和管理。尤其是一些开源框架,也是采用多模块的方式,提供插件集成,用户可以根据需要配置指定的模块。
【资料图】
构建微服务项目,基本上会对模块进行明确的划分,比如:
抽象定义公共代码及工具类封装进行引用业务代码进行单独定义模块对外提供的接口服务单独定义模块不同功能系统不同模块......上面的拆分也并非绝对,随着架构师对于项目结构的不同理解,可能会衍生出不同的模块
本篇文章会详细演示如何创建 SpringBoot 父子模块的项目,针对部分知识点着重讲解
2. 软硬件环境
电脑:win10
创建项目工具:IDEA 2022.3
JDK 版本:JDK8
Maven版本:3.6.1
3.项目搭建
3.1.创建 SpringBoot 父项目
1)首先打开 IDEA 工具,创建spring项目 ,点击File ---->new --->Create New Project
2)选择 Spring Initializr(初始化),选择Project SDK 1.8,类型选择maven,Java语言选择8
Group:项目组织唯一的标识符,实际对应 Java 的包的结构,是 main 目录里 Java 的目录结构Group 也就是 groupId,分为多个段;一般情况下第一段为域,第二段为公司,第三段为项目名称。以Nacos源码进行举例,Group 为 com.alibaba.nacos:com 为商业组织,alibaba 为公司名称,nacos 就是项目名称
Artifact:项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称,Artifact 即为 artifactId。
Type:分为四种不同的类型,日常我们选择默认第一条就行,也就是 Maven Project
Language:开发语言的话自然就是默认的 Java
Packaging:打包方式,分为 War 包 和 Jar 包,这里选择 Jar 包
Java Version:选择 Java 的一个版本,再坚持 20 年的 JDK 1.8
Version:当前项目的一个版本,SNAPSHOT 为快照的意思
开发时一般使用此类型,因为对于 Maven 仓库的同步较为友好,有不同纬度的同步选择
Name:定义项目名称
Description:定义项目描述信息,帮助别人更好的了解项目
Package:定义 main.java 目录下的结构
3)选择 SpringBoot 版本信息以及 Pom.xml 文件依赖组件
这里选择的 SpringBoot 版本是2.7.1,jdk8对应2.*版本,点击 Next 继续进行创建项目
4)一个标准的 SpringBoot 项目就产生了
3.2. 构建子项目centerdao
在父项目的基础上直接创建module
1)点击菜单栏中File -> New -> Module,不同版本中可能会有一点差异
2)这里就是重复上述在创建 SpringBoot 项目时的步骤,Next 下一步
3)配置可按照需求进行选择,因为不同的 Module 需要引用不同的 Pom 依赖,后面会与 Parent 保持一个交互,确认创建信息,点击Finish生成项目
4)最终结构目录如下,项目已成功创建,后续我们要修改其中的 Pom.xml 使其成为真正的父子项目
3.3. 构建子项目centerweb
1)创建步骤与上边的centerdao一致
2)添加spring web依赖,web项目作为整个项目的启动项目,继续添加代码简化依赖lombok
3)最终项目结构如下
4. 建立父子 Module 依赖
将建立的 Parent 项目与后面创建的 Module 产生关联,需要改动以下几点
修改 Parent 项目 Pom.xml 的打包方式 packaging 标签打包方式为 pom删除不必要文件并梳理 Pom.xml 依赖上下级关系需要新加一个 modules 标签,包含所有子项目,将所有的子模块都引入进去
对于子工程中的 .xml 文件
修改子项目Module 项目 pom.xml中parent 标签为其父工程添加打包方式为 jar删除依赖包:继承父工程的依赖包
4.1 删除不必要文件
1)删除父项目红框标注的内容:src 文件是保存源代码的,可是我们的多模块的代码存放在多个架构层中,所以不需要这个 src 来存放代码
2)删除除启动项目centerweb之外的启动文件和配置文件和启动类
删除后的项目结构是这样的:
4.2.修改 Parent 项目 packaging
打开 Parent 项目的根 Pom.xml 文件,新增下方代码
pom centerdao centerweb
packaging 包含三个值Jar、War、Pom,默认 Jar的方式
首先来解释下 packaging 为 Pom 的意思,宏观而言即没有代码需要测试或者编译,也没有资源需要处理
Jar:内部调用或作为服务进行发布使用
War:需要部署的项目
Pom:寓意为一个父级项目,一般作为项目聚合和依赖传递使用
modules 代表了 Parent 项目下的子 Module,体现了聚合的思想
这里把 父项目Parent 项目的 Pom.xml 配置复制出来,帮助大家后续排查问题
4.0.0 org.springframework.boot spring-boot-starter-parent 2.7.11 com.ykx.center centerparent 0.0.1-SNAPSHOT centerparent SpringBoot 父子模块项目 1.8 pom centerdao centerweb org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-maven-plugin
spring-boot-maven-plugin的作用是运行mvn package时会将项目打包为可运行的 jar 包,java -jar运行即可
如果不加这个plugins,java -jar xxx.jar会报出如下错误
xxx/target/bootdemo-remote-api-0.0.1-SNAPSHOT.jar中没有主清单属性
4.3.修改子项目pom.xml 信息
创建后的子项目的 Parent 信息是 SpringBoot 配置,修改后如下
com.ykx.center centerparent 0.0.1-SNAPSHOT
4.4.补充说明
另外说一下dependencies和dependencyManagement标签做一个讲解
1)dependencies
如果 Parent 项目中使用dependencies标签,标签内的依赖默认传递子 Module,不用子 Module 进行显示书写依赖
2)dependencyManagement
dependencyManagement与dependencies不同的是,标签内的依赖不会默认传递子 Module,其作用只是为了统一版本声明
如果子 Module 依赖 Parent 项目中dependencyManagement标签内的 pom 依赖,需要显示在子 Module 的 pom 文件中进行书写
5. 项目继承关系
我们按照《构建子 Module》章节的内容,构建出如下所述的子 Module,如果centerweb项目引用centerdao项目
com.ykx centerdao 0.0.1-SNAPSHOT
然后修改centenweb子 Module 的 pom.xml 文件如下
4.0.0 com.ykx.center centerparent 0.0.1-SNAPSHOT com.centerweb centerweb 0.0.1-SNAPSHOT centerweb centerweb子项目 1.8 0.0.1-SNAPSHOT com.ykx centerdao ${centerdao.version} org.springframework.boot spring-boot-starter-web org.projectlombok lombok true org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot org.springframework.boot spring-boot-maven-plugin org.projectlombok lombok
通过继承关系的设置,centerdao中的代码就可以被centerweb项目进行引用
6. 验证项目
在 Parent 项目 pom.xml中 dependencies 标签中定义了spring-boot-starter-web依赖,直接使用 web 相关内容即可,直接可以运行
在centerweb中创建 Controller 控制器
@RestController public class DemoController { @RequestMapping("/ok") public String test() { return "OK"; } }
启动项目
启动后端项目成功后,使用restfultool请求接口
参考
IDEA 最便捷创建 SpringBoot 父子 Module 项目
到此这篇关于IDEA搭建Maven模块化项目的实现的文章就介绍到这了,更多相关IDEA搭建Maven模块化项目内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
标签:
IDEA搭建Maven模块化项目的实现 今日热讯
2023-05-15
环球报道:主力资金青睐这5大概念板块
2023-05-15
【经济观察】便利店行业如何实现从跟随到引领?
2023-05-15
焦点速读:6大乒乓世界冠军齐聚!1人世乒赛三连冠,2大国乒教练转型
2023-05-15
外媒爆料:未来只需说"Siri"即可唤醒苹果语音助手_快讯
2023-05-15
当前短讯!中国船级社完成“鼓浪屿”号豪华邮轮高压岸电系统改造检验
2023-05-15
视焦点讯!喜讯!武汉三镇从上港手上成功截胡一位宝藏级球员,如今已成核心
2023-05-15
全球微资讯!魔咒?联盟近四年常规赛MVP当季都没能打进分区决赛
2023-05-15
中一科技:拟回购不低于1.5亿元且不超过3亿元公司股份
2023-05-15
天天要闻:老衲是什么意思_老衲究竟是什么意思
2023-05-15
环球报道:主力资金青睐这5大概念板块
【经济观察】便利店行业如何实现从跟随到引领?
焦点速读:6大乒乓世界冠军齐聚!1人世乒赛三连冠,2大国乒教练转型
外媒爆料:未来只需说"Siri"即可唤醒苹果语音助手_快讯
当前短讯!中国船级社完成“鼓浪屿”号豪华邮轮高压岸电系统改造检验
视焦点讯!喜讯!武汉三镇从上港手上成功截胡一位宝藏级球员,如今已成核心
全球微资讯!魔咒?联盟近四年常规赛MVP当季都没能打进分区决赛
中一科技:拟回购不低于1.5亿元且不超过3亿元公司股份
天天要闻:老衲是什么意思_老衲究竟是什么意思
(国际·一周看天下)俄罗斯纪念卫国战争胜利78周年_全球今日报
唐僧性格特点及相关情节_唐僧性格特点及事例3个
经典散文诗50篇_经典散文诗大全
焦点速读:windows资源管理器在哪里打开首页视频(windows资源管理器在哪里打开)
天天即时:机械硬盘卖不动了!东芝2022净利润暴跌35%
广东交通违章在线查询-广东省交通违章查询系统 广东省交通违章查询网
衣服在精不在多,备齐这“2裤2裙”,时髦又百搭,夏天也能穿_当前热讯
敲刻绣画!看山东手造精品“养成记” 最后两天!济南舜耕会展中心!咱逛展去~
曼联女足迎来足总杯决赛,德赫亚社媒:创造历史,祝一切顺利 全球快讯
全球快看:美国“债务上限”也要碰瓷中国?!
中集长宏与三星重工达成框架协议,计划开展整船建造项目 环球资讯
涉案金额达14亿余元!北京警方严打涉税类犯罪
院士专家为生物催化与酶工程国家重点实验室把脉
傅莎:电煤消费预计在2030年后进入下降拐点_当前热点
关爱农村留守儿童主题微电影《风的孩子》上线 观速讯
美丽的海滨小城:印尼拉布安巴焦
要闻速递:俄称乌以英导弹袭击民用设施 乌暂无回应
如何用贝壳做天使_送外甥媳妇什么礼物好
世界观天下!“墙”烈推荐!榆阳区钟楼巷彩绘墙成市民打卡新地标
安全标准化管理制度汇编_安全标准化管理手册
- 强酸疏通下水道_强酸
- 最新调查显示:超七成基金经理看好TMT板块
- 环球快讯:切尔西vs诺丁汉森林首发:斯特林、菲利克斯先发,凯帕替补
- 世界银行行长马尔帕斯:美国债务违约将危害全球经济 天天观察
- 中国政府欧亚事务特别代表将赴5国访问 联合国回应
- 天天观焦点:热议:南粤大地经济回暖势头强劲
- 天天观热点:76人交易恩比德,快船重建
- 宜买车官网报价(宜买车官网)
- 热推荐:希利苏斯部落飞行点在哪_希利苏斯
- 世界焦点!硕士学位论文公开答辩公告(劳动经济学)
- 世界焦点!23岁女大学生死于逼婚:父母的控制欲,是一个家庭最大的灾难!
- 【天天新视野】国家对游戏行业的政策
- 当前快看:平顶山市新华区:群众一声诉求 政府多方努力
- 恒大汽车剥离地产业务 专注新能源汽车|环球关注
- 世界速看:今日时讯:上海一咖啡店被立案调查 五个女博士已被立案调查
- 世界百事通!43家上榜!2022年度国家绿色数据中心名单公布
- 制定十五条措施助力优化营商环境
- 云南省镇康县发布暴雨橙色预警
- 世界今热点:实行浮动汇率将怎么样_实行浮动汇率将 _
- 当日快讯:家家悦:公司在淄博有连锁门店,淄博烧烤对公司业务影响较小 环球信息
- 今日观点!oracle数据库入门教程_oracle数据库
- 学生探索动物百科
- 火焙鱼的做法_火焙鱼的做法步骤
- 机构开始担忧!收割渠道被断掉了
- “灿若朝霞——徐悲鸿南洋之路”开展,70余件作品揭开精彩往事|看点
- 场均砍17+6+3!广东二队新星耐高赛表现全能 身高2米06周鹏接班人
- 天天播报:天津创业型人才落户办理流程是什么?
- 焦点快报!深圳发布“带押过户”登记申办指引
- 泰康在线保险是真的吗?适合谁?-世界独家
- 粤万年青:接受线上参与公司2022年度及2023年第一季度业绩说明会的投资者调研
- 苏迪曼杯赛本周日挥拍,中国队首战埃及
- 石油路街道联合爱心企业开展“爱心奶粉捐赠 情暖贫困儿童”活动
- 韩媒:因牵涉地产弊案,韩国警方决定将尹锡悦夫人的哥哥等人送检 天天日报
- 环球消息!在大山里,有一群奋力攀登的逐梦少年
- 当前速递!精简人员 缩减投资 福特公司在华被迫瘦身
- 全球资讯:2023年日照市各级机关招录公务员第一批拟录用人员公示
- 水利部组织开展2023年太湖流域防洪调度演练-当前快讯
- 苏州外地车可以进市区吗 时讯
- 神州细胞:安诺能4于四月底获国家定价后 正在积极开展各省市准入和推广工作
- 每日消息!在现场|张家口下花园:关爱独居母亲
- 世界通讯!甘肃省庆阳市2023-05-11 14:45发布大风蓝色预警
- 新消息丨官宣!男足3场熊猫杯具体时间敲定,全新首发冲冠军,CCTV5直播
- 东吴证券:维持理想汽车-W“买入”评级 目标价149.11港元
- 当前快看:中国电信(601728)5月11日主力资金净卖出3.45亿元
- 什么是道德的起源首要前提_什么是道德的起源
- 当前滚动:张颖颖疑回应汪小菲新恋情:祝福下一个照顾好深情巨婴
- 【世界速看料】中消协发报告点名“五一”住宿价格普涨等现象
- 19个行业获融资净买入 银行行业获净买入最多
- 港股异动 | 珍酒李渡(06979)再涨超7% 机构称市场对白酒赛道情绪正逐渐恢复 次高端酒仍有较大机会 环球动态
- 克明食品:(1)兴疆牧歌2023年一季度营业收入同比增长超过50%,归母净利润亏损,但同比大幅减亏 每日速看