SpringCloud 多模块下引入独立bom模块的正确架构方案

📅 发布时间:2026/7/12 17:53:18 👁️ 浏览次数:
SpringCloud 多模块下引入独立bom模块的正确架构方案
目录一、目录结构二、全局bom格式三、根项目Pom格式四、微服务pom格式一、目录结构├─config│ └─bom # 全局bom统一管理版本和依赖├─services│ ├─auth-service│ ├─gateway│ └─iam-service└─shared└─common├─core└─jwt├─bom # root parent bom 继承全局bom只管理插件依赖二、全局bom格式?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd modelVersion4.0.0/modelVersion !-- 关键不继承父POM -- groupIdcom.xloda/groupId version1.0.0/version artifactIdbom/artifactId packagingpom/packaging descriptionXLODA Cloud Bom Manager/description properties !-- 框架版本 -- spring.boot.version3.5.9/spring.boot.version spring.cloud.version2023.0.5/spring.cloud.version spring.cloud.alibaba.version2023.0.1.0/spring.cloud.alibaba.version xloda.cloud.version1.0.0/xloda.cloud.version !-- 配套中间件版本兼容性最优 -- nacos.version2.3.2/nacos.version sentinel.version1.8.7/sentinel.version seata.version1.7.1/seata.version rocketmq.version5.2.0/rocketmq.version spring.cloud.gateway.version4.1.5/spring.cloud.gateway.version spring.cloud.loadbalancer.version4.0.5/spring.cloud.loadbalancer.version resilience4j.version2.1.0/resilience4j.version !-- API文档 -- knife4j.openapi3.version4.5.0/knife4j.openapi3.version !-- 工具类 -- lombok.version1.18.34/lombok.version jjwt.version0.12.6/jjwt.version fastjson2.version2.0.54/fastjson2.version hutool.version5.8.43/hutool.version /properties dependencyManagement dependencies !-- SpringBoot BOM -- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-dependencies/artifactId version${spring.boot.version}/version typepom/type scopeimport/scope /dependency !-- SpringCloud BOM -- dependency groupIdorg.springframework.cloud/groupId artifactIdspring-cloud-dependencies/artifactId version${spring.cloud.version}/version typepom/type scopeimport/scope /dependency !-- SpringCloudAlibaba BOM -- dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-alibaba-dependencies/artifactId version${spring.cloud.alibaba.version}/version typepom/type scopeimport/scope /dependency !-- 项目自有模块 -- !-- 公共模块 -- dependency groupIdcom.xloda/groupId artifactIdcore/artifactId version${xloda.cloud.version}/version /dependency dependency groupIdcom.xloda/groupId artifactIdjwt/artifactId version${xloda.cloud.version}/version /dependency !-- 常用第三方依赖 -- !-- API文档 -- dependency groupIdcom.github.xiaoymin/groupId artifactIdknife4j-openapi3-jakarta-spring-boot-starter/artifactId version${knife4j.openapi3.version}/version /dependency !-- 工具类 -- dependency groupIdorg.projectlombok/groupId artifactIdlombok/artifactId version${lombok.version}/version scopeprovided/scope /dependency dependency groupIdcom.alibaba.fastjson2/groupId artifactIdfastjson2/artifactId version${fastjson2.version}/version /dependency dependency groupIdcn.hutool/groupId artifactIdhutool-all/artifactId version${hutool.version}/version /dependency !-- JJWTJWT核心依赖 -- dependency groupIdio.jsonwebtoken/groupId artifactIdjjwt-api/artifactId version${jjwt.version}/version /dependency dependency groupIdio.jsonwebtoken/groupId artifactIdjjwt-impl/artifactId version${jjwt.version}/version scoperuntime/scope /dependency dependency groupIdio.jsonwebtoken/groupId artifactIdjjwt-jackson/artifactId version${jjwt.version}/version scoperuntime/scope /dependency /dependencies /dependencyManagement /project三、根项目Pom格式?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd modelVersion4.0.0/modelVersion parent groupIdcom.xloda/groupId artifactIdbom/artifactId version1.0.0/version relativePathconfig/bom/pom.xml/relativePath /parent artifactIdxloda-cloud/artifactId packagingpom/packaging descriptionXLODA Cloud Root Parent Module/description modules moduleshared/common/module moduleservices/gateway/module moduleservices/auth-service/module moduleservices/iam-service/module /modules properties java.version21/java.version maven.compiler.release${java.version}/maven.compiler.release project.build.sourceEncodingUTF-8/project.build.sourceEncoding project.reporting.outputEncodingUTF-8/project.reporting.outputEncoding /properties build !-- 插件版本管理仅声明版本子模块需显式引用才生效 -- pluginManagement plugins !-- 统一管理Spring Boot打包插件版本 -- plugin groupIdorg.springframework.boot/groupId artifactIdspring-boot-maven-plugin/artifactId version${spring.boot.version}/version !-- 复用BOM中的Spring Boot版本 -- /plugin /plugins /pluginManagement /build /project四、微服务pom格式?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd modelVersion4.0.0/modelVersion parent groupIdcom.xloda/groupId artifactIdxloda-cloud/artifactId version1.0.0/version relativePath../../pom.xml/relativePath /parent artifactIdauth-service/artifactId descriptionAuthentication and Authorization Service/description dependencies dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency dependency groupIdcom.xloda/groupId artifactIdcore/artifactId /dependency dependency groupIdcom.xloda/groupId artifactIdjwt/artifactId /dependency dependency groupIdorg.projectlombok/groupId artifactIdlombok/artifactId /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-security/artifactId /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-test/artifactId scopetest/scope !-- 关键仅测试阶段生效 -- !-- 排除JUnit4兼容引擎Spring Boot 3.x默认用JUnit5避免依赖冗余 -- exclusions exclusion groupIdorg.junit.vintage/groupId artifactIdjunit-vintage-engine/artifactId /exclusion /exclusions /dependency /dependencies build finalNameauth-service/finalName plugins plugin groupIdorg.springframework.boot/groupId artifactIdspring-boot-maven-plugin/artifactId executions execution goals goalrepackage/goal !-- 生成可执行JAR核心 -- /goals /execution /executions /plugin /plugins /build /project注意这里需要配置relativePath且路径指向父项目pom的位置否则maven clean可能会报错最终实现了功能完全的bom模块引入模式架构。