SpringBoot 多模块项目构建(父/子模块)

多模块项目

使用 SpringBoot 开发 Web 项目,如果项目整体不太复杂,无需使用微服务架构,为了开发的便利性可以采用 Maven 的多模块项目结构。

SpringBoot 的多模块项目就是基于 Maven 管理、对项目按照功能或者层级结构进行拆分,降低项目耦合性,抽取公共模块,实现一处开发多处引用,提高代码复用率和开发效率,更利于项目后期的维护和升级。

项目结构初始化

1. 创建父工程

创建多模块项目时首先要创建最上层父工程,并用来统一管理子模块,创建方法流程为:

  1. 使用 IDEA 编译器,选择文件 -> New -> 新建项目,选择 Spring Initializr,点击下一步,
  2. 设置合适的 Group 名称和 Artifact 名称(两者最终代表包路径),选择合适的 Java 版本并点击下一步,
  3. 选择合适的起步依赖,也可以不选择后续使用 maven 坐标手动添加,点击下一步,
  4. 为项目设置合适的名称,并选择项目在本地生成的根目录,点击完成
  5. 初始化生成 SpringBoot 项目

得到父工程项目后,由于父工程只用来统一管理多模块,并不会进行代码编写,因此会将父工程目录结构中无用的文件和文件夹删除

  • 删除 .mvn 和 src 文件夹
  • 删除 mvnw 和 mvnw.cmd 文件
  • 留下 pom.xml 作为父级依赖设置,进行统一依赖管理
2. 创建子模块

父工程创建成功后,可以在此基础上新建子模块,在父项目上点击鼠标右键,选择新建 -> 模块 -> 新建模块,选择 Spring Initializr,之后便和创建 SpringBoot 项目一致,定义组织名称、选择起步依赖、定义项目名称,最后完成创建得到一个子模块项目。

在创建子模块项目时有几点需要注意:

  • 子模块创建时 Group 、 Artifact 和 Name 不要与父工程重复,否则关联时会出现冲突
  • 子模块的模块名会在目录结构中展示,并使用模块名进行父子关联
  • 自定义子模块名称时,对应的的内容根目录模块文件位置要跟随变化,如果设置成了父工程目录,则会覆盖父工程文件导致结构错误!

完成子模块的创建后,在项目中就会出现如下的目录结构

image.png

关联父子模块

到目前为止,整个项目结构上满足了父工程、子模块,要想真正实现父子模块关联还需要进一步设置关联关系。

1. 父工程配置
  • 父工程的 pom.xml 中,设置 <packaging>pom</packaging>,代表打包类型为 pom
  • 父工程的 pom.xml 中,使用 <module> 标签定义子模块进行关联
<modules>
  <module>child_module_name</module>
</modules>
  • 注意:父工程的 pom.xml 中的 <parent> 标签中引用了 springboot ,这是 SpringBoot 项目默认需要引用的顶级工程,不可以删除,如果删除会导致项目运行失败!
2. 子模块配置
  • 子模块的 pom.xml 中, parent 标签内容修改为父工程的 groupId、artifacId 等信息
  • 子模块的 pom.xml 中,使用 <packaging>jar</packaging> 设置打包为 jar 格式(可不加,在创建模块时会有选择默认打包类型)

项目依赖的统一管理

1. 默认引入依赖

起步依赖

在创建项目模块时,如果不选择任何初始依赖,那么 SpringBoot 项目只会默认加入 spring-boot-starter 和 spring-boot-starter-test 两个依赖信息

<dependencies>
    <dependency>
	    <groupId>org.springframework.boot</groupId>
	    <artifactId>spring-boot-starter</artifactId>
    </dependency> 
    <dependency>
	    <groupId>org.springframework.boot</groupId>
	    <artifactId>spring-boot-starter-test</artifactId>
	    <scope>test</scope>
    </dependency>
</dependencies>

引入依赖

对于 Web 项目,还需要增加 web 依赖信息,可以在父工程的 pom.xml 文件中的 标签中添加如下依赖信息

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

添加完成后,则所有子模块都会继承该依赖信息自动生效,无需额外引入。

2. 统一管理依赖

既然是父-子工程的结构,可以将项目中用到的依赖统一在父工程项目中进行管理,统一依赖和版本号信息。

  1. om.xml 文件中,可以使用 标签自定义相关依赖的版本号
<properties>
    <java.version>1.8</java.version>
    <lombok.version>1.18.0</lombok.version>
    <mysql.version>8.0.23</mysql.version>
</properties>

2 然后可以使用 标签统一声明用到的依赖信息,其中的版本号使用 标签定义变量

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency><dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <type>pom</type>
            <version>${mysql.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>
  1. 每个子模块需要使用依赖是只需要在 标签中加入依赖 groupId 和 artifactId 信息即可,版本号会自动使用父工程声明的版本
<dependencies>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
</dependencies>

配置完成之后,如果有升级依赖 jar 版本的需求,则只需要在父工程中更新对应依赖的版本信息即可。

项目运行

多模块的 SpringBoot 项目构建完成并配置完成后,且引入了 web 项目必须的依赖,就可以验证项目是否可以正常运行。

  • 验证运行:由于父工程没有代码启动类,因此只需要进入到子模块中,找到对应的启动类运行,如果运行成功,说明子模块运行依赖等配置成功;

image.png

  • 验证打包:打包流程使用 maven 工具管理,只需要在 IDEA 右侧打开 maven 工具栏,在父工程下的 Lifecycle 声明周期中,执行 clean、package、install 等阶段,控制台输出执行成功日志说明打包完成。

image.png

这样一个父工程/子模块的项目就初始化完成了,如果需要新增子模块,则按照相同的方式初始化模块,关联父工程,并在父工程中增加 <module> 标签对应即可。

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring Boot模块项目中,POM主要是用来管理模块的依赖关系和版本控制的。 通常情况下,POM中会包含以下依赖: 1. Spring Boot依赖:这些依赖包括Spring Boot核心依赖和各种Spring Boot Starter依赖,用于构建Spring Boot应用程序。 2. 公共依赖:这些依赖包括各种通用的依赖,例如数据库驱动程序、日志框架、JSON解析器等。 3. 插件依赖:这些依赖包括Maven插件和其他构建工具,用于编译、打包和部署Spring Boot应用程序。 例如,以下是一个典型的Spring Boot模块项目POM文件示例: ``` <project> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>parent</artifactId> <version>1.0.0-SNAPSHOT</version> <packaging>pom</packaging> <modules> <module>module1</module> <module>module2</module> <module>module3</module> </modules> <properties> <spring.boot.version>2.4.3</spring.boot.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <version>${spring.boot.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>${spring.boot.version}</version> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <version>1.4.200</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${spring.boot.version}</version> </plugin> </plugins> </build> </project> ``` 在这个例中,POM定义了三个模块(module1、module2、module3),并且包含了Spring Boot和其他公共依赖。它还定义了一个Maven插件,用于构建和打包Spring Boot应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爪哇程序人生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值