1、模块父子工程创建
- 1.创建一个Maven工程作为父级工程(总管模块工程的公共配置)
直接Next不用做任何选择,建立一个Maven工程 - 2、Maven父级工程下创建Spring-boot模块工程
Maven父级工程下创建Spring-boot模块工程,new module时,可以选择Spring Initializr - 2、pom.xml配置,模块工程之间的相互引用
maven父工程pom配置 - maven子模块工程配置
3、工程整理
- 按以上搭建完毕之后,删除父工程下的src文件夹,父工程只负责管理模块功能依赖引用
- 删除service,dao,core…(命名不限)各个子模块工程下的resource文件夹,以及java文件夹下的Application启动类(Spring Initializr自动创建的)。只保留web(一个完整的启动工程)不动
4、Install工程打包
- 不能正常打包,则创建配置存在问题,根据提示解决,一般在模块工程依赖时问题容易出现
5、创建模块工程出现的几个问题,解决办法:
- 1、子模块之间相互引用,打包时报cat’t find XXXX:检查pom依赖,以及被依赖的工程文件夹路径,groupId artifactId等配置
- 2、Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.2:XX(default-XXXX) :工程依赖了
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
系统会自动检测工程的main方法,在SpringTest类中随便实现一个main hello world,或者取消依赖即可
- 3、Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.2:XXXX (default-XXXX) on project skill-research-service
去掉plugin依赖后,依旧可能会报错,因为XXXApplicationTests中使用了如下注解
@RunWith(SpringRunner.class)
@SpringBootTest
去掉即可
6、Install工程打包成功
7、模块工程引用注入
工程成功建立后,api模块引用service工程接口类进行注入。这一步若idea检测报错,检查模块工程依赖信息是否正确
8、启动工程配置
- 1、配置依赖:步骤工程整理中,保留了一个完整的启动工程,在启动工程的pom.xml依赖中,依赖模块入口工程。
这样在工程打包上线,或者启动聚合工程时,才能识别到各个模块。 - 2、启动扫描位置配置
spring-boot启动时,会自动扫描启动类文件夹下所有文件,然而聚合工程文件在不同的模块中,这时候就需要在启动时配置扫描路径。
这里是扫描所有模块工程的公共位置 - 3、启动时,若报错,找不到xml,或者mapper,启动类指定一下mapper扫描位置,父工程pom.xml指定xml打包位置,启动工程properties配置xml扫描位置即可
Field iMsFansService in com.lonewolf.api.controller.MsFansController required a bean of type ‘com.lonewolf.service.mapper.MsFansMapper’ that could not be found.