构建

以上述需求为例,我们在拆分之时,根据需求,将其分成

  • 父模块
  • erp-common
  • erp-service
  • erp-service-impl
  • erp-web-reception
  • erp-web-finance
  • erp-web-fix
  • erp-web-repertory

创建父模块

构建分模块项目的时候首先需要创建一个父级的模块,所有的子模块均继承自父模块。因为我们整体架构采用SpringBoot构建,所以父模块要创建为SpringBoot项目

  1. 选择Spring Initializr --> Next

springboot多模块 pom管理 springboot多模块项目架构_springboot多模块 pom管理

  1. 填写项目名称,选择JDK版本,其他无需修改 --> Next
  • Group: 一般为公司域名倒置
  • Artifact: 项目名

springboot多模块 pom管理 springboot多模块项目架构_项目结构_02

  1. 选择SpringBoot版本,其他无需勾选 --> Next

springboot多模块 pom管理 springboot多模块项目架构_main方法_03

  1. 填写项目名、项目地址 --> Finish

springboot多模块 pom管理 springboot多模块项目架构_springboot多模块 pom管理_04

  1. 创建之后,项目结构如下,删除如下选中部分文件

springboot多模块 pom管理 springboot多模块项目架构_main方法_05

  1. 至此,父模块创建完成,此时的pom文件如下,此pom即是下文所说的父pom文件

springboot多模块 pom管理 springboot多模块项目架构_springboot多模块 pom管理_06

创建 erp-common

erp-common模块我们约定只存放实体类,工具类,常量类、异常类等一些共用且不需要交由Spring管理的类,因此创建的时候不需要它是一个SpringBoot项目,只需要创建为传统的Maven项目即可;

  1. 选中我们的项目名Wayne-ERP,右键New --> Module

springboot多模块 pom管理 springboot多模块项目架构_main方法_07

  1. 选择Maven,以表示我们创建的是一个Maven项目 --> Next

springboot多模块 pom管理 springboot多模块项目架构_开发工具_08

  1. 此处填写的artifactId就是我们的模块名,创建该模块时,如果第一步选中了父模块,那么此处GroupId和Version都会自动填充,如果没有自动填充,说明创建该模块的时候没有选中Wayne-ERP --> Next

springboot多模块 pom管理 springboot多模块项目架构_main方法_09

  1. 该模块的名称以及该模块存放的位置,我一般在自动生成的名称中间加个-就拿来直接使用了 --> Finish

springboot多模块 pom管理 springboot多模块项目架构_开发工具_10

  1. 最下面的pom.xml即是父pom,父pom内容如下,增加了一个module子模块

springboot多模块 pom管理 springboot多模块项目架构_springboot多模块 pom管理_11

  1. erp-common的pom文件如下,其中圈起部分为自己添加内容,relativePath 指向父pom位置

springboot多模块 pom管理 springboot多模块项目架构_main方法_12

  1. 至此,erp-common模块创建完成,此时项目结构如下,

springboot多模块 pom管理 springboot多模块项目架构_main方法_13

创建 erp-service

erp-service模块我们约定只存放service接口,因此也不需要交由Spring去管理,所以我们也将其创建为传统的Maven项目,创建方式与erp-common相同,此处不再赘述,如有不知道怎么操作的同学可私聊我或者发邮件给我

  1. 创建完成之后,此时父pom内容如下

springboot多模块 pom管理 springboot多模块项目架构_项目结构_14

  1. erp-service的pom文件如下

springboot多模块 pom管理 springboot多模块项目架构_springboot多模块 pom管理_15

创建erp-service-impl

erp-service-impl我们约定存放service实现类,即业务层代码,在Controller中需要用到自动注入,因此需要交由Spring管理,所以我们将其创建为SpringBoot项目。在创建Maven的子模块与创建SpringBoot的子模块有些差别,下面列出详细步骤;

  1. 选中项目名Wayne-ERP,右键New --> Module,在弹出的页面中选择Spring Initializr --> Next
  2. 此处Group需要手动填写,填好之后 --> Next

springboot多模块 pom管理 springboot多模块项目架构_main方法_16

  1. 选择SpringBoot版本,与创建父模块时选择版本要保持一致

springboot多模块 pom管理 springboot多模块项目架构_main方法_17

  1. 点击Next --> Finish
  2. 创建完成之后,需要在父pom中手动添加erp-service-impl子模块,并删除dependencies中的依赖

springboot多模块 pom管理 springboot多模块项目架构_main方法_18

  1. 将erp-service-impl的pom文件中parent标签,手动替换为如下格式

springboot多模块 pom管理 springboot多模块项目架构_项目结构_19

  1. 此时项目结构如下,删除如下选中部分文件,因为我们程序的启动入口在erp-web-*,所以在erp-service-impl中不需要main方法(SpringBoot是以Main方法启动的)

springboot多模块 pom管理 springboot多模块项目架构_main方法_20

  1. 至此,erp-service-impl模块创建完成,整体项目结构如下

springboot多模块 pom管理 springboot多模块项目架构_main方法_21

创建erp-web-repertory

此模块即是我们仓库管理系统的打包入口,启动入口,存放与仓管相关接口和页面

  1. 创建方式与erp-service-impl相似,此处需要修改Package内容,此处包名表示SpringBoot自动生成的main方法所在的位置,因为SpringBoot基于main方法启动时,默认会自动扫描本包及本包下所有子包的内容,所以我们将main方法向外提一层;

springboot多模块 pom管理 springboot多模块项目架构_java_22

  1. 此处表示SpringBoot创建好之后,自动添加的依赖,我们只选择Web即可,表明这是一个Web项目,后续需要用到第三方框架,我们再自行整合;

springboot多模块 pom管理 springboot多模块项目架构_项目结构_23

  1. 其余步骤与erp-service-impl相似,只是不需要删除自动生成的文件,此时项目接口如下:

springboot多模块 pom管理 springboot多模块项目架构_springboot多模块 pom管理_24

创建其余web模块

此时我们还剩erp-web-reception、erp-web-finance、erp-web-fix没有创建,这三个模块与erp-web-repertory创建方式相同,此处就不再赘述,只需注意命名问题即可;

完整项目结构:

springboot多模块 pom管理 springboot多模块项目架构_java_25

依赖

各个模块已经创建完成,还剩下的就是各个模块之间的依赖关系了,各模块之间应该怎么依赖呢?具体的哪个包又应该放在哪个模块下面的?我整理一张图片供大家参考:

springboot多模块 pom管理 springboot多模块项目架构_main方法_26

pom文件如下:

springboot多模块 pom管理 springboot多模块项目架构_开发工具_27

web模块pom基本相似,都只引入erp-service-impl即可,在此只列举一个

springboot多模块 pom管理 springboot多模块项目架构_开发工具_28

运行

每个web模块对应一个main方法,启动时找到各自的main方法,点击启动即可,idea一般会自动检测SpringBoot程序入口,想跑哪个点哪个~~

springboot多模块 pom管理 springboot多模块项目架构_main方法_29

扩展

另一种模块结构,感兴趣的可以发邮件与我;

springboot多模块 pom管理 springboot多模块项目架构_main方法_30

占位符

常规占位 (¬_¬)…