步骤过于详细,多图慎入!!!
假设一个场景,要开发一个4s店维修部的办公系统,其功能有:前台接待,维修抢单,财务结算,库存管理。因而咱们建立一个项目balabalabala写完交工。web
一段时间后,客户提出,库存管理出现了重大调整。因而咱们二次开发,写好以后,告知客户:“系统更新,全部部门暂停使用15分钟、、、”。因而,客户排队,维修停工,结算暂停、、、店内一片慌乱。架构
又一段时间后,客户提出,财务结算须要修改。因而咱们再次开发,写好以后,告知客户:“系统更新,全部部门暂停使用15分钟、、、”。因而,客户排队,维修停工,仓库休息、、、店内一片慌乱。框架
双一段时间后,客户提出、、、ide
叒一段时间后,客户开始抱怨:“我只是调整某一个部门的业务,大家能不能不要把整个系统停掉,这样损失太大了、、、”工具
因而你对每一个功能作一个系统,接待系统,维修系统,财务系统,库存系统。四个系统应运而生;idea
叕一段时间后,客户提出,你看登陆后这个位置啊,把个人名字写到公司名字下面,还要把十几个股东的资料展现出来,还有、、、spa
因而你带着需求回去面对四个系统的相同功能修改、、、卒!3d
采用分模块的方式构建项目就是将上例中用到的两种方式结合在一块儿,简而言之就是将一个大的项目拆分红小的模块,各功能之间互不干扰又可实现共用基础参数;code
以上述需求为例,咱们在拆分之时,根据需求,将其分红xml
父模块
erp-common
erp-service
erp-service-impl
erp-web-reception
erp-web-finance
erp-web-fix
erp-web-repertory
构建分模块项目的时候首先须要建立一个父级的模块,全部的子模块均继承自父模块。由于咱们总体架构采用SpringBoot构建,因此父模块要建立为SpringBoot项目
选择Spring Initializr --> Next
填写项目名称,选择JDK版本,其余无需修改 --> Next
Group: 通常为公司域名倒置
Artifact: 项目名
选择SpringBoot版本,其余无需勾选 --> Next
填写项目名、项目地址 --> Finish
建立以后,项目结构以下,删除以下选中部分文件
至此,父模块建立完成,此时的pom文件以下,此pom便是下文所说的父pom文件
erp-common模块咱们约定只存放实体类,工具类,常量类、异常类等一些共用且不须要交由Spring管理的类,所以建立的时候不须要它是一个SpringBoot项目,只须要建立为传统的Maven项目便可;
选中咱们的项目名Wayne-ERP,右键New --> Module
选择Maven,以表示咱们建立的是一个Maven项目 --> Next
此处填写的artifactId就是咱们的模块名,建立该模块时,若是第一步选中了父模块,那么此处GroupId和Version都会自动填充,若是没有自动填充,说明建立该模块的时候没有选中Wayne-ERP --> Next
该模块的名称以及该模块存放的位置,我通常在自动生成的名称中间加个-
就拿来直接使用了 --> Finish
最下面的pom.xml便是父pom,父pom内容以下,增长了一个module子模块
erp-common的pom文件以下,其中圈起部分为本身添加内容,relativePath 指向父pom位置
至此,erp-common模块建立完成,此时项目结构以下,
erp-service模块咱们约定只存放service接口,所以也不须要交由Spring去管理,因此咱们也将其建立为传统的Maven项目,建立方式与erp-common相同,此处再也不赘述,若有不知道怎么操做的同窗可私聊我或者发邮件给我
建立完成以后,此时父pom内容以下
erp-service的pom文件以下
erp-service-impl咱们约定存放service实现类,即业务层代码,在Controller中须要用到自动注入,所以须要交由Spring管理,因此咱们将其建立为SpringBoot项目。在建立Maven的子模块与建立SpringBoot的子模块有些差异,下面列出详细步骤;
选中项目名Wayne-ERP,右键New --> Module,在弹出的页面中选择Spring Initializr --> Next
此处Group须要手动填写,填好以后 --> Next
选择SpringBoot版本,与建立父模块时选择版本要保持一致
点击Next --> Finish
建立完成以后,须要在父pom中手动添加erp-service-impl子模块,并删除dependencies中的依赖
将erp-service-impl的pom文件中parent标签,手动替换为以下格式
此时项目结构以下,删除以下选中部分文件,由于咱们程序的启动入口在erp-web-*,因此在erp-service-impl中不须要main方法(SpringBoot是以Main方法启动的
)
至此,erp-service-impl模块建立完成,总体项目结构以下
此模块便是咱们仓库管理系统的打包入口,启动入口,存放与仓管相关接口和页面
建立方式与erp-service-impl类似,此处须要修改Package内容,此处包名表示SpringBoot自动生成的main方法所在的位置,由于SpringBoot基于main方法启动时,默认会自动扫描本包及本包下全部子包的内容,因此咱们将main方法向外提一层;
此处表示SpringBoot建立好以后,自动添加的依赖,咱们只选择Web便可,代表这是一个Web项目,后续须要用到第三方框架,咱们再自行整合;
其他步骤与erp-service-impl类似,只是不须要删除自动生成的文件,此时项目接口以下:
此时咱们还剩erp-web-reception、erp-web-finance、erp-web-fix没有建立,这三个模块与erp-web-repertory建立方式相同,此处就再也不赘述,只需注意命名问题便可;
完整项目结构:
各个模块已经建立完成,还剩下的就是各个模块之间的依赖关系了,各模块之间应该怎么依赖呢?具体的哪一个包又应该放在哪一个模块下面的?我整理一张图片供你们参考:
pom文件以下:
web模块pom基本类似,都只引入erp-service-impl便可,在此只列举一个
每一个web模块对应一个main方法,启动时找到各自的main方法,点击启动便可,idea通常会自动检测SpringBoot程序入口,想跑哪一个点哪一个~~
另外一种模块结构,感兴趣的能够发邮件与我;
常规占位 (¬_¬)…