springboot多模块项目的创建

本文详细介绍如何构建SpringBoot多模块项目,包括父模块与子模块的创建、依赖管理、模块间依赖及常见问题解决。通过聚合模块统一依赖,简化大型项目管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

What

内含一个或多个maven模块的SpringBoot项目称为SpringBoot多模块项目

Why

  1. 便于维护
    将一个大的单体项目分成多个子模块有利于模块间的维护,
    删除或移动单个模块时对其他模块的影响也比较小
    单个模块还可以复用

  2. 共享依赖
    只需要在父类中定义公共的依赖项,子类模块都会共享父类的依赖项
    在大型项目中会使得代码更容易简洁。

How

1.父模块

创建父项目(SpringBoot)

在这里插入图片描述

删除不需要的目录

去除src .mvn mvnw mvnw.cmd 文件

在这里插入图片描述

pom

  1. packaging标签
    打包方式改为"pom", 表示这个模块是聚合模块
    把子类模块都"聚合"起来
    使用maven打包,可以从这个模块开始,会自动计算打包顺序
<packaging>pom</packaging>
  1. 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>
  1. modules标签
    这个标签管理的是被聚合的模块
    当新建子模块时,modules会自动添加单个的module标签

启动类

父模块启动类,是整个模块的启动类
所有的请求都走父模块的端口
为了使子模块的服务也能启动,需要在父模块启动类上加入注解

@ComponentScan(basePackages = {"com.ybj.*",})

2.子模块

1.创建子模块

选择Module
在这里插入图片描述

选择maven项目
在这里插入图片描述
输入具体信息
在这里插入图片描述

2.pom

  1. packaging标签
    这里可以选择jar或者war
    指定打包方式
  2. parent
    子类pom中的parent自动指向了父类的GAV
    子类会自动引入父类pom中dependencies的中依赖项
<!--    父类:自动选择了父类-->
    <parent>
        <artifactId>my-app</artifactId>
        <groupId>com.ybj</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
  1. 模块间依赖
    需要依赖某个模块,可以在pom中声明
    这里的依赖是从本地仓库下载的,不是远程仓库

  2. 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>
					</goals>
				</execution>
			</executions>
		</plugin>
	</plugins>
</build>

5. 常见问题

依赖冲突

因为子类会继承父类的依赖项,所以可能 导致依赖冲突,从而使项目无法启动。
这里可以使用maven helper插件进行冲突的排查

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值