当前位置: 首页 > news >正文

Maven项目父模块POM中是否应该包含SpringBoot打包插件(spring-boot-maven-plugin)

父模块POM是否包含SpringBoot打包插件

一、场景

一个基于SpringBoot的Maven父子模块的项目(一个父项目中包含多个子项目),父模块 POM文件中,是否应该包含打包需要的插件(spring-boot-maven-plugin)?
假设项目中的子模块,有些是应用服务,有些是自定义Starter。

二、结论

对于同时包含应用服务子模块、公共库模块和自定义starter模块的项目,不应该在父POM文件中,配置spring-boot-maven-plugin,只在需要执行Spring Boot的应用服务模块中使用它。

在这里插入图片描述

三、spring-boot-maven-plugin 插件配置

spring-boot-maven-plugin 插件,在POM中的配置代码:

    <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build>

PS:<configuration>的配置,并不是必须的。本处是打包时排除Lombok,也就是打包应用时,不会将 Lombok 的 jar 文件包含在最终的应用程序中。Lombok 是用来生成源代码(编译时使用的),在运行时不需要包含它。

四、分析

父POM中包含spring-boot-maven-plugin 的可能理由

  1. 减少重复配置:将spring-boot-maven-plugin的配置放在父POM中可以避免在每个子模块中重复相同的配置,使得维护更容易。
  2. 统一版本控制:如果所有子模块都使用相同的插件版本,那么在父POM中指定插件版本可以确保一致性。
  3. 简化子模块POM:子模块的POM文件会更简洁,因为它们不需要显式地声明插件配置。

但是,需要注意的是,并非所有的子模块都需要使用spring-boot-maven-plugin。例如,如果你有一些子模块是库或starter,而不是可执行的应用服务,那么它们可能不需要打包成可执行的jar或者war包,因此不需要spring-boot-maven-plugin

对于自定义Starter

对于自定义的starter模块,通常它们并不需要spring-boot-maven-plugin来进行构建,因为它们只是提供依赖管理和自动配置功能。因此,在这些模块中不应该引入这个插件。

总结

  • 如果你的父POM仅包含了多个应用服务子模块(不包含公共库模块和自定义starter模块),并且这些服务需要一致的构建流程,那么在父POM中配置spring-boot-maven-plugin是一个好的实践。
  • 对于自定义starter或其他库模块,不应在这些子模块中使用spring-boot-maven-plugin
  • 对于同时包含应用服务子模块、公共库模块和自定义starter模块的项目,不应该在父POM文件中,配置spring-boot-maven-plugin,只在需要执行Spring Boot特定任务的应用服务模块中使用它。

http://www.mrgr.cn/news/22584.html

相关文章:

  • [苍穹外卖]-06微信登录详解
  • 基于ONSEMI电源管理芯片NCP1607之AC300V高输入电压36W调色温智能电源
  • Windows Docker 部署 HertzBeat 实时监控告警系统
  • Oracle(113)什么是全备份(Full Backup)?
  • golang学习笔记12——Go 语言内存管理详解
  • ios 项目中设置左侧徽标
  • linux运维常见命令行
  • 绿光扫码激光器定制多少钱?费用决定因素
  • 数据资产:新时代的财富密码
  • 长文本分块的新策略——后期分块(Late Chunking),让RAG应用“又准又高效“
  • 《数字图像处理(面向新工科的电工电子信息基础课程系列教材)》Chapter 1课件2024
  • Spring Boot 常用注解详解
  • LeetCode题练习与总结:最大正方形--221
  • 解决VSCode保存后未格式化文档的问题
  • Android Graphics 显示系统 - 图层的生命周期 Layer Lifecycle
  • 生成单据的流水号
  • AI一键生成 PPT
  • C#/.NET/.NET Core优质学习资料
  • FreeRTOS学习笔记(四)Freertos的中断管理及临界保护
  • C++ STL算法从入门及常见运用方法详解