Idea中SpringBoot多模块项⽬的建⽴实现
What
内含⼀个或多个maven模块的SpringBoot项⽬称为SpringBoot多模块项⽬
Why
便于维护将⼀个⼤的单体项⽬分成多个⼦模块有利于模块间的维护,删除或移动单个模块时对其他模块的影响也⽐较⼩单个模块还可以复⽤
共享依赖只需要在⽗类中定义公共的依赖项,⼦类模块都会共享⽗类的依赖项在⼤型项⽬中会使得代码更容易简洁。
How
1.⽗模块
创建⽗项⽬(SpringBoot)
删除不需要的⽬录
去除src .mvn d ⽂件
pom
packaging标签打包⽅式改为"pom", 表⽰这个模块是聚合模块把⼦类模块都"聚合"起来使⽤maven打包,可以从这个模块开始,会⾃动计算打包顺序
<packaging>pom</packaging>
dependencies与dependencyManagement标签
1. dependencies将依赖放⼊标签中⼦模块会⾃动引⼊⽗类的的依赖
2. dependencyManagement将依赖放⼊标签中⼦模块不会⾃动引⼊⽗类的的依赖还需要在⼦类中声明⼀次依赖 GAV中不需要声明version标签,version同⽗类中的⼀致
⽗类pom⽂件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.ybj</groupId>
<artifactId>my-app</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>my-app</name>
<description>springboot多项⽬</description>
<!-- ⽗类的packing只能是pom-->
<packaging>pom</packaging>
<!-- ⼦类直接继承-->
<dependencies>
<!-- ⼦类需要在pom中⼿动加⼊依赖(version不⽤写)-->
<dependencyManagement>
modules标签这个标签管理的是被聚合的模块当新建⼦模块时,modules会⾃动添加单个的module标签
启动类
⽗模块启动类,是整个模块的启动类所有的请求都⾛⽗模块的端⼝为了使⼦模块的服务也能启动,需要在⽗模块启动类上加⼊注解
@ComponentScan(basePackages = {"com.ybj.*",})
2.⼦模块
1.创建⼦模块
选择Module
选择maven项⽬
输⼊具体信息
2.pom
packaging标签这⾥可以选择jar或者war 指定打包⽅式
parent ⼦类pom中的parent⾃动指向了⽗类的GAV ⼦类会⾃动引⼊⽗类pom中 dependencies 的中依赖项<!-- ⽗类:⾃动选择了⽗类-->
<parent>
<artifactId>my-app</artifactId>
<groupId>com.ybj</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
模块间依赖需要依赖某个模块,可以在pom中声明这⾥的依赖是从本地仓库下载的,不是远程仓库Maven Helper插件在idea中安装maven helper插件点击pom⽂件,选择 Dependency Analyzer
即可查看并搜索依赖项,这对于解决依赖冲突很有帮助
4.打包
⽅式1:聚合模块直接打包
在聚合模块打包,会⾃动计算依赖顺序,依次打包
依次执⾏ clean 与 install maven会⾃动计算构建顺序
⽅式2:使⽤插件
⽅式1的问题就是耗费时间长,因为是全部打包,所以就需要实现单个模块打包这⾥需要借助spring-boot-maven-plugin插件<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.0.RELEASE</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
spring boot选择题</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
5. 常见问题
依赖冲突
因为⼦类会继承⽗类的依赖项,所以可能导致依赖冲突,从⽽使项⽬⽆法启动。这⾥可以使⽤maven helper插件进⾏冲突的排查
到此这篇关于Idea中SpringBoot多模块项⽬的建⽴实现的⽂章就介绍到这了,更多相关Idea中SpringBoot多模块内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论