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特定任务的应用服务模块中使用它。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

宋冠巡

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

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

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

打赏作者

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

抵扣说明:

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

余额充值