0


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>

标签对应即可。

标签: spring boot java 后端

本文转载自: https://blog.csdn.net/grammer_du/article/details/131874420
版权归原作者 爪哇程序人生 所有, 如有侵权,请联系我们删除。

“SpringBoot 多模块项目构建(父/子模块)”的评论:

还没有评论