Springboot项目分模块建立流程
内含一个或多个maven模块的SpringBoot项目称为SpringBoot多模块项目
为什么分模块?
**便于维护:**将一个大的单体项目分成多个子模块有利于模块间的维护, 删除或移动单个模块时对其他模块的影响也比较小,单个模块还可以复用,对于建立微服务时候进行服务的拆分
**共享依赖:**只需要在父类中定义公共的依赖项,子类模块都会共享父类的依赖项,在大型项目中会使得代码更容易简洁。
如何分模块流程
①创建父模块
创建父项目(SpringBoot)
删除不需要的目录.mvn mvnw mvnw.cmd 文件
1.1pom.xml
packaging标签打包方式改为"pom" :表示这个模块是 聚合模块 把子类模块都"聚合"起来 使用maven打包,可以从这个模块开始,会自动计算打包顺序
<!-- 打包方式-->
<packaging>pom</packaging>
父类的pom.xml的demo:
<!-- 父类: springboot自带的启动类父类-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<!-- 创建时填写的基本信息-->
<groupId>com.ysl.homedetection</groupId>
<artifactId>home-detection</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>home-detection</name>
<description>springboot多项目</description>
<!-- 父类的packing只能是pom-->
<packaging>pom</packaging>
<!-- 子类直接继承-->
<dependencies>
<!-- 子类需要在pom中 手动加入依赖(version不用写)-->
<dependencyManagement>
1.2启动类
父模块启动类,是整个模块的启动类,所有的请求都走父模块的端口,为了使子模块的服务也能启动,需要在父模块启动类上加入注解:
@ComponentScan(basePackages = {"com.ysl.*",})
如下:
@SpringBootApplication
@ComponentScan(basePackages = {"com.ysl.*",}) // 扫描所有模块下的该路径
@MapperScan("com.ysl.**.mapper") // mybatisplus扫包
public class HomeAdminApplication {
public static void main(String[] args) {
SpringApplication.run(HomeAdminApplication.class, args);
}
}
②创建子模块
选择Module
选择maven项目(选SpringBoot项目删除一些SpringBoot的东西即可)
输入具体信息
若是创建了一个SpringBoot的子模块,需要把启动类删掉以及相关的SpringBoot的starter的maven包注释掉
1.3pom.xml
若需要单独打包给该模块打包:
packaging标签这里可以选择jar或者war 指定打包方式
引入父类的pom:
<parent>
<artifactId>home-detection</artifactId>
<groupId>com.ysl.homedetection</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
parent 子类pom中的parent自动指向了父类的GAV 子类会自动引入父类pom中 dependencies 的中依赖项com.ysl.homedetection0.0.1-SNAPSHOT
模块间依赖 需要依赖某个模块,只需要在pom中声明即可,这里的依赖是从本地仓库下载的,不是远程仓库,如下:
<dependencies>
<dependency>
<groupId>com.ysl.homecommon</groupId>
<artifactId>home-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
Maven插件
下载一个插件Maven Helper,在idea中安装maven helper点击pom文件,选择 Dependency Analyzer
点击下方位置进行查看:
即可查看并搜索依赖项,这对于解决依赖冲突很有帮助
多模块打包
方式1:聚合模块直接打包
在聚合模块打包,会自动计算依赖顺序,依次打包:
依次执行 clean 与 install maven会自动计算构建顺序:
方式2:使用插件
方式1的问题就是耗费时间长, 因为是全部打包, 所以就需要实现单个模块打包 这里需要借助spring-boot-maven-plugin插件:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>