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

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 version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <!-- 关键:不继承父POM! --> <groupId>com.xloda</groupId> <version>1.0.0</version> <artifactId>bom</artifactId> <packaging>pom</packaging> <description>XLODA Cloud Bom Manager</description> <properties> <!-- 框架版本 --> <spring.boot.version>3.5.9</spring.boot.version> <spring.cloud.version>2023.0.5</spring.cloud.version> <spring.cloud.alibaba.version>2023.0.1.0</spring.cloud.alibaba.version> <xloda.cloud.version>1.0.0</xloda.cloud.version> <!-- 配套中间件版本(兼容性最优) --> <nacos.version>2.3.2</nacos.version> <sentinel.version>1.8.7</sentinel.version> <seata.version>1.7.1</seata.version> <rocketmq.version>5.2.0</rocketmq.version> <spring.cloud.gateway.version>4.1.5</spring.cloud.gateway.version> <spring.cloud.loadbalancer.version>4.0.5</spring.cloud.loadbalancer.version> <resilience4j.version>2.1.0</resilience4j.version> <!-- API文档 --> <knife4j.openapi3.version>4.5.0</knife4j.openapi3.version> <!-- 工具类 --> <lombok.version>1.18.34</lombok.version> <jjwt.version>0.12.6</jjwt.version> <fastjson2.version>2.0.54</fastjson2.version> <hutool.version>5.8.43</hutool.version> </properties> <dependencyManagement> <dependencies> <!-- SpringBoot BOM --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring.boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!-- SpringCloud BOM --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring.cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!-- SpringCloudAlibaba BOM --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>${spring.cloud.alibaba.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!-- ========== 项目自有模块 ========== --> <!-- 公共模块 --> <dependency> <groupId>com.xloda</groupId> <artifactId>core</artifactId> <version>${xloda.cloud.version}</version> </dependency> <dependency> <groupId>com.xloda</groupId> <artifactId>jwt</artifactId> <version>${xloda.cloud.version}</version> </dependency> <!-- ========== 常用第三方依赖 ========== --> <!-- API文档 --> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId> <version>${knife4j.openapi3.version}</version> </dependency> <!-- 工具类 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.alibaba.fastjson2</groupId> <artifactId>fastjson2</artifactId> <version>${fastjson2.version}</version> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>${hutool.version}</version> </dependency> <!-- JJWT(JWT核心依赖) --> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-api</artifactId> <version>${jjwt.version}</version> </dependency> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-impl</artifactId> <version>${jjwt.version}</version> <scope>runtime</scope> </dependency> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-jackson</artifactId> <version>${jjwt.version}</version> <scope>runtime</scope> </dependency> </dependencies> </dependencyManagement> </project>

三、根项目Pom格式

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.xloda</groupId> <artifactId>bom</artifactId> <version>1.0.0</version> <relativePath>config/bom/pom.xml</relativePath> </parent> <artifactId>xloda-cloud</artifactId> <packaging>pom</packaging> <description>XLODA Cloud Root Parent Module</description> <modules> <module>shared/common</module> <module>services/gateway</module> <module>services/auth-service</module> <module>services/iam-service</module> </modules> <properties> <java.version>21</java.version> <maven.compiler.release>${java.version}</maven.compiler.release> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> </properties> <build> <!-- 插件版本管理:仅声明版本,子模块需显式引用才生效 --> <pluginManagement> <plugins> <!-- 统一管理Spring Boot打包插件版本 --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${spring.boot.version}</version> <!-- 复用BOM中的Spring Boot版本 --> </plugin> </plugins> </pluginManagement> </build> </project>

四、微服务pom格式

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.xloda</groupId> <artifactId>xloda-cloud</artifactId> <version>1.0.0</version> <relativePath>../../pom.xml</relativePath> </parent> <artifactId>auth-service</artifactId> <description>Authentication and Authorization Service</description> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.xloda</groupId> <artifactId>core</artifactId> </dependency> <dependency> <groupId>com.xloda</groupId> <artifactId>jwt</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <!-- 关键:仅测试阶段生效 --> <!-- 排除JUnit4兼容引擎:Spring Boot 3.x默认用JUnit5,避免依赖冗余 --> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <build> <finalName>auth-service</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> <!-- 生成可执行JAR核心 --> </goals> </execution> </executions> </plugin> </plugins> </build> </project>

注意这里需要配置relativePath,且路径指向父项目pom的位置,否则maven clean可能会报错!!!

最终,实现了功能完全的bom模块引入模式架构。

http://www.jsqmd.com/news/396924/

相关文章:

  • UCB-CS186-数据库导论笔记-全-
  • UIUC-CS225-数据结构中文笔记-全-
  • 液氩采购指南:如何选择可靠的直销厂家,液氧/制氮机/真空管/液氩/液氮/制氧机/储罐/二氧化碳,液氩公司口碑推荐榜 - 品牌推荐师
  • 华盛顿大学-CSE331-软件设计与实现讲座笔记-全-
  • 滑铁卢-CS452-实时编程讲座笔记-全-
  • 康奈尔-CS3110-数据结构与函数式编程讲义-全-
  • 拖延症福音 10个AI论文写作软件测评:自考毕业论文+开题报告必备工具推荐
  • 携程旅行机票抓取
  • P3121 [USACO15FEB] Censoring G
  • 2026年国内诚信的截止阀实力厂家哪家强,锻钢闸阀/通风蝶阀/V型球阀/锻钢截止阀/蝶式止回阀,截止阀企业联系方式 - 品牌推荐师
  • 携程旅行 参数分析
  • 2026年谷歌/google独立站优化代运营外贸推广公司/服务商深度测评榜单:这5家值得重点关注! - 深圳昊客网络
  • 告别Hyprland/Niri键鼠共享难题:Pynergy —— 为 Wayland 设计的 Synergy 兼容客户端
  • 看完就会:MBA专属降AI率工具,千笔·专业降AIGC智能体 VS 灵感风暴AI
  • php代碼審計(危險函數了解與)
  • php代碼審計(危險函數了解與pikachu靶場分析)
  • 交稿前一晚!AI论文软件 千笔ai写作 VS 锐智 AI,研究生高效写作神器!
  • 格式总出错?千笔·专业论文写作工具,实力封神的AI论文软件
  • 小白救星!降AIGC网站 千笔 VS 笔捷Ai,专科生专属神器!
  • 王阳明心学05
  • 天虹提货券回收避坑指南 - 京顺回收
  • 建议收藏|8个降AIGC平台深度测评,本科生降AI率必备指南
  • 告别熬夜改稿!6款免费AI论文工具,一键生成初稿超省力 - 麟书学长
  • 科研党收藏!10个AI论文网站测评:本科生毕业论文写作必备工具推荐
  • 2026国内做得好的双片钉箱机公司,排行榜单告诉你,双片钉箱机实力厂家优质品牌榜单更新 - 品牌推荐师
  • 用过才敢说 9个AI论文软件测评:MBA毕业论文+科研写作必备工具推荐
  • Python基于Vue的 网络书店管理系统django flask pycharm
  • Python基于Vue的中医药文献管理系统 django flask pycharm
  • Python基于Vue的中小型企业网络办公管理系统 django flask pycharm
  • 上海装修设计新焦点:2026原木风空间设计厂家推荐,原木风室内装修/轻奢室内空间设计,上海装修设计公司哪家好 - 品牌推荐师