开发工具idea
使用idea开发maven项目我感觉比myeclipse结构更清晰
myeclipse 父模块,子模块都是在一个工作空间workspace里同级表示
idea project也是一个module项目,作为父模块 子模块创建在idea project下 层级关系更直观
一.spring boot 多模块项目搭建
1.新建一个 空的 spring-boot工程 作为多模块项目父类工程
录入项目信息,next
spring boot版本我选择最新正式版本,dependencies都不选,父类项目是为了管理子项目的 ,next,next
新建好的项目结构如下,修改pom.xml 增加打包方式 为pom (原因还是因为父类项目是为了管理子项目的,一个pom.xml文件就能完成) <packaging>pom</packaging>
删除项目里的文件, 只保留(.idea文件夹 , 和项目 pom 文件, 以及一个 *.iml 文件 ) 删除后如下所示
2.创建module,现在创建一个spring-boot 项目,该项目也是主项目
next
先选择最基本的spring web依赖
next
finish完成后项目结构如下
3. 设置父子项目的关系
我们查看wydev-main的pom.xml文件设置的parent,目前是继承spring-boot-starter-parent的,我们需要改为继承wydev-parent,在由wydev-parent去继承spring-boot-starter-parent
(这也是为什么wydev-parent需要创建成spring-boot项目 , 因为他的子模块把spring-boot-starter-parent的继承改成wydev-parent,而wydev-parent没spring-boot-starter-parent继承的话,wydev-main的spring-boot项目就出问题了)
parent改为wydev-parent
在父项目中添加 包含的子项目
父项目pom.xml修改前 --》 修改后
4.目前多模块项目最核心的wysdev-main spring-boot项目已经配置好,接下来就是合理的设计,把wysdev-main 不同领域的代码拆分都子模块
比如我把wysdev-main中的业务代码独立出来,单独写在wysdev-service模块中
现在创建普通的maven项目就够 只是把原本写在wysdev-main的代码独立一个模块 ,空的maven项目就行
next
finish
点击finish后 我们查看wydev-parent 的pom.xml 发现modules自动包含了 wydev-service ,同时wydev-service的pom.xml也集成自wydev-parent
(因为spring-boot项目分多模块 springboot本身要继承spring-boot-starter-parent,但是 spring Initializr里设置不了模块依赖才手动改pom,普通maven项目都能界面配置的)
6.设置wysdev-main依赖wysdev-service,设置完毕后在wydev-service写的代码 在wysdev-main编译时会编译进去
就是wysdev-main引入了wysdev-service的代码
(wysdev-service就是一个普通的java maven工程,打包后是一个jar)
7.多模块项目建立好了,如果还需要把wysdev-main的代码,比如接口独立出来,新建wysdev-api模块 也是和wysdev-service步骤一样的
需要注意的是 wysdev-service是无法使用wysdev-main的类和方法的,是wysdev-main引入了wysdev-service
8.测试效果
设置注解扫描路径,默认是启动类所在包及子包
wysdev-service新建了一个controller
然后我们启动wysdev-main 项目
浏览器访问http://127.0.0.1:8080/wys/userModule/get
成功返回信息,多模块项目配置完毕。
二.普通 maven web项目多模块搭建
普通 maven web项目多模块搭建比spirngboot多模块简单多了
建立父项目的时候不用选择spring Initializr,选择maven项目就行
然后创建子模块项目是会出现选择父模块的下拉框,直接选择就关联好了,pom的配置也会自动加上
只有在主模块中引入其他子模块需要手写代码添加下依赖就行
<dependency>
<groupId>com.wying</groupId>
<artifactId>wydev-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
(先建一个空的parent项目让所有子项目继承是方便统一管理子项目依赖
可以在parent的pom中配置所有子项目的共同依赖jar,版本等,parent继承也是maven一个很重要核心的功能,
不使用parent继承关系,那么所有子模块都需要在各自pom单独引入需要的jar,版本改动,版本冲突问题肯定不少)