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

这篇具有很好参考价值的文章主要介绍了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 不要与父工程重复,否则关联时会出现冲突
  • 子模块的模块名会在目录结构中展示,并使用模块名进行父子关联
  • 自定义子模块名称时,对应的的内容根目录模块文件位置要跟随变化,如果设置成了父工程目录,则会覆盖父工程文件导致结构错误!

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

springboot模块化架构,springboot,spring boot,java,后端

关联父子模块

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

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 项目必须的依赖,就可以验证项目是否可以正常运行。

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

springboot模块化架构,springboot,spring boot,java,后端

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

springboot模块化架构,springboot,spring boot,java,后端

这样一个父工程/子模块的项目就初始化完成了,如果需要新增子模块,则按照相同的方式初始化模块,关联父工程,并在父工程中增加 <module> 标签对应即可。文章来源地址https://www.toymoban.com/news/detail-696858.html

到了这里,关于SpringBoot 多模块项目构建(父/子模块)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一个基于.NET Core构建的简单、跨平台、模块化的商城系统

    今天大姚给大家分享一个基于.NET Core构建的简单、跨平台、模块化、完全开源免费(MIT License)的商城系统:Module Shop。 商品:分类、品牌、单位、选项(销售属性)、属性、属性模板、属性组。 销售:订单、物流。 内容:首页配置、评论、回复。 配置:国家、用户、仓库

    2024年03月27日
    浏览(46)
  • 从单体架构向微服务迁移:模块化单体是如何帮助的

    你开始构建一个漂亮的单体系统。也许是一个模块化的单体系统。 随着时间的推移,系统不断增长,需求也在不断变化。渐渐地,系统开始出现裂痕。 这可能是出于组织原因,需要在团队之间分配工作。也可能是由于扩展性问题和性能瓶颈。 你开始评估可能的解决方案,以

    2024年01月16日
    浏览(41)
  • Nautilus Chain :基于模块化架构的Layer3正在走向成熟

    Nautilus Chain 是一个基于 Eclipse 和 Celestia 构建的模块化 Layer3 链。作为定位在 Layer0 的链基建概念,Eclipse 和 Celestia 为面向未来的区块链扩容技术提供了一套开发工具和基础框架。尽管这种前沿技术过去一直处于概念验证阶段,尚未推出适用于大规模应用的成熟产品(特别是

    2023年04月25日
    浏览(72)
  • IDEA 搭建 Maven模块化项目

    目录 1.前言 2. 软硬件环境 3.项目搭建 3.1.创建 SpringBoot 父项目 3.2. 构建子项目centerdao 3.3. 构建子项目centerweb 4. 建立父子 Module 依赖 4.1 删除不必要文件 4.2.修改 Parent 项目 packaging 4.3.修改子项目pom.xml 信息 4.4.补充说明 5. 项目继承关系 6. 验证项目 7.异常处理  8.结语 鸣谢    

    2024年02月04日
    浏览(34)
  • 现代 CMake 模块化项目管理指南

    参考小彭老师的视频教程整理笔记,学习同时方便快速查阅,视频链接如下 【公开课】现代 CMake 模块化项目管理指南【C/C++】 对应课程 PPT 和源码见 https://github.com/parallel101/course 完整案例参考源码仓库 https://github.com/parallel101/course/tree/master/16/00 第一点,划分了 biology 和 pybm

    2024年02月03日
    浏览(30)
  • TIMC 驱动的模块化区块链 Axiomesh:致力于构建「Mass Commercial Adoption」新范式

    撰文:JIN,Techub News 在区块链技术的演进历程中,我们正见证历史性的转折点:「Mass Adoption」即区块链的大规模普及,指的是区块链技术从封闭的小范围应用扩展到广泛的行业和市场的过程。它是区块链技术跨越早期采用者的界限,渗透到普通消费者生活的每个角落,成为

    2024年03月24日
    浏览(35)
  • SpringBoot 多模块项目构建(父/子模块)

    多模块项目 使用 SpringBoot 开发 Web 项目,如果项目整体不太复杂,无需使用微服务架构,为了开发的便利性可以采用 Maven 的多模块项目结构。 SpringBoot 的多模块项目就是基于 Maven 管理、对项目按照功能或者层级结构进行拆分,降低项目耦合性,抽取公共模块,实现一处开发

    2024年02月09日
    浏览(28)
  • 什么是模块化?为什么要进行模块化开发?

    模块化是一种软件开发的设计模式,它将一个大型的软件系统划分成多个独立的模块,每个模块都有自己的功能和接口,并且能够与其他模块独立地工作。  先来一段八股文 模块化开发可以带来以下好处: 提高代码的复用性:模块化可以将代码划分成可重用的部分,降低代

    2023年04月12日
    浏览(38)
  • Gradle构建SpringBoot单模块项目

    方式Ⅰ:未基于:Gradle Wrapper 方式Ⅱ:( 推荐 使用) Gradle Wrapper 【可以不安装Gradle、统一Gradle的版本】——包括Maven也是一样的可以用Wrapper的方式 版本:JDK8 + SpringBoot2.7.15 + Gradle8.x 本篇主要讲实现。Gradle与Maven的区别自己去看 别用这种方式,gradle的版本也低 一、需要先安

    2024年02月08日
    浏览(31)
  • 23年,我又学习了一次amd模块化,模块化思想

    src/view1/index.html src/view1/main.js plugins/module.js 源码链接: https://gitee.com/littleboyck/front/tree/master/front-module 联系方式:QQ: 1187253007

    2024年02月07日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包