Spring Boot 3 多模块工程:从 30+ Maven 模块到 Open Core 双仓架构
久滴直播电商平台 · 技术博客系列 第 9 篇 标签Maven多模块Open Core工程架构前言当一个项目有 30 多个 Maven 子模块、同时需要维护开源版和商业版两个版本时工程架构的设计就变得至关重要。模块之间怎么组织版本号怎么统一管理两个版本怎么共享基础代码又各自独立构建久滴直播电商平台采用Open Core 双仓架构——Community 版MIT 开源和 Pro 版商业 EULA后端 30 Maven 模块通过三层结构和${revision}统一版本管理实现了一套基础、两个版本的灵活架构。本文将深入拆解这套方案。目录项目全景三层模块结构30 子模块的组织策略${revision} flatten-maven-plugin 统一版本管理Open Core 双仓架构yudao-dependencies BOM合规性实践LICENSE / NOTICE / 原作者保留1. 项目全景三层模块结构久滴后端的模块结构遵循经典的三层设计yudao根 POM ├── yudao-dependencies/ # 第一层依赖版本管理 BOM ├── yudao-framework/ # 第二层技术框架层 │ ├── yudao-common # 通用工具、枚举、异常 │ ├── yudao-spring-boot-starter-web │ ├── yudao-spring-boot-starter-mybatis │ ├── yudao-spring-boot-starter-redis │ ├── yudao-spring-boot-starter-security │ └── ... 15 个 starter ├── yudao-module-*/ # 第三层业务模块层 │ ├── yudao-module-system # 系统管理用户/角色/菜单/通知 │ ├── yudao-module-infra # 基础设施代码生成/文件/配置 │ ├── yudao-module-mall # 商城商品/订单/营销/支付 │ ├── yudao-module-live # 直播推拉流/IM/点播★ Pro │ ├── yudao-module-member # 会员等级/积分/签到 │ ├── yudao-module-circle # 圈子社区/热度排行★ Pro │ ├── yudao-module-museum # 博物馆 ★ Pro │ └── ... └── yudao-server/ # 启动入口聚合所有模块三层结构的职责dependencies只管版本号不包含任何代码framework只管技术能力不包含业务逻辑module只管业务实现按需引入 framework starter2. 30 子模块的组织策略api / biz 分离每个业务模块都拆分为api和biz两个子模块yudao-module-live/ ├── yudao-module-txlive-api/ # 接口层SPI 接口、DTO、枚举 └── yudao-module-txlive-biz/ # 实现层Service、Controller、DAO为什么要分离api模块可以被其他模块依赖如module-mall依赖module-live的 SPI 接口但不需要引入实现层的 Spring 依赖biz模块只在yudao-server中被引入避免模块间的循环依赖SPI 接口定义在api中实现在biz中完美配合条件装配模块间依赖管理模块间通过 API 接口进行通信而不是直接依赖 biz 模块// yudao-module-mall 的 pom.xmldependencygroupIdcn.iocoder.boot/groupIdartifactIdyudao-module-txlive-api/artifactIdversion${revision}/version/dependency这样module-mall可以调用module-live的LiveMarketingService接口但不会引入直播模块的全部依赖。3.${revision} flatten-maven-plugin 统一版本管理30 个模块如果各自维护版本号简直是一场灾难。久滴平台使用 Maven CI-Friendly Versions 方案根 POM 定义 revisionpropertiesrevision2026.06-pro-SNAPSHOT/revisionyudao.community.version2026.06-SNAPSHOT/yudao.community.version/propertiesgroupIdcn.iocoder.boot/groupIdartifactIdyudao/artifactIdversion${revision}/version子模块继承所有子模块都使用${revision}作为版本号!-- yudao-module-txlive-api/pom.xml --parentgroupIdcn.iocoder.boot/groupIdartifactIdyudao-module-live/artifactIdversion${revision}/version/parentflatten-maven-plugin${revision}在发布时需要被替换为实际版本号flatten-maven-plugin负责这个工作plugingroupIdorg.codehaus.mojo/groupIdartifactIdflatten-maven-plugin/artifactIdversion${flatten-maven-plugin.version}/versionconfigurationflattenModeresolveCiFriendliesOnly/flattenModeupdatePomFiletrue/updatePomFile/configurationexecutionsexecutionidflatten/idphaseprocess-resources/phasegoalsgoalflatten/goal/goals/executionexecutionidflatten.clean/idphaseclean/phasegoalsgoalclean/goal/goals/execution/executions/plugin执行mvn install时插件会自动生成.flattened-pom.xml将${revision}替换为2026.06-pro-SNAPSHOT。发版时只需改根 POM 一个地方# 从 SNAPSHOT 变为正式版mvn versions:set-property-Dpropertyrevision-DnewVersion2026.06-pro4. Open Core 双仓架构久滴平台采用Open Core模式——核心功能开源增值功能商业化┌──────────────────────────────────────────────┐ │ Community 版MIT │ │ │ │ yudao-framework │ │ yudao-module-system │ │ yudao-module-infra │ │ yudao-module-mall商品/订单/营销基础 │ │ yudao-module-member │ │ ... │ │ │ │ GitHub: jiudi-dev/live-mall-community │ └──────────────────────────────────────────────┘ ┌──────────────────────────────────────────────┐ │ Pro 版EULA │ │ │ │ 依赖 Community 版制品 │ │ │ │ yudao-module-live直播推拉流/IM/点播 ★ │ │ yudao-module-circle社区圈子/热度排行 ★ │ │ yudao-module-museum博物馆模块 ★ │ │ yudao-module-aiAI 增值功能 ★ │ │ pro-framework-extPro 框架扩展 ★ │ │ │ │ 云效 Packages / GitHub Private │ └──────────────────────────────────────────────┘Pro 仓的构建策略Pro 仓的pom.xml声明了双许可证licenseslicensenameMIT License (Community Edition)/nameurlhttps://opensource.org/licenses/MIT/urlcommentsCommunity Edition is released under the MIT License./comments/licenselicensenameLiveMall Pro Commercial EULA (Pro Edition)/nameurlhttps://kudi.net.cn/eula/urlcommentsPro Edition requires a signed EULA./comments/license/licensesPro 仓的revision使用-pro-后缀区分!-- Pro 仓版本2026.06-pro-SNAPSHOT --revision2026.06-pro-SNAPSHOT/revision!-- 依赖的 Community 版本 --yudao.community.version2026.06-SNAPSHOT/yudao.community.version5. yudao-dependencies BOMyudao-dependencies是一个 BOMBill of Materials模块集中管理所有第三方依赖的版本号dependencyManagementdependenciesdependencygroupIdcn.iocoder.boot/groupIdartifactIdyudao-dependencies/artifactIdversion${revision}/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagement子模块引入依赖时不需要指定版本号全部由 BOM 统一管理。好处是版本冲突一目了然升级某个依赖只需改 BOM 一个地方子模块的pom.xml更加简洁6. 合规性实践LICENSE / NOTICE / 原作者保留久滴平台基于芋道源码ruoyi-vue-pro二次开发遵循 MIT 协议的合规要求developers!-- 保留芋道源码原作者MIT 义务 --developeridYunaiV/idnameruoyi-vue-pro original author/nameurlhttps://github.com/YunaiV/urlrolesroleUpstream Author/role/roles/developer!-- LiveMall 团队 --developeridjiudi-team/idnameJiuDi Live-Mall Team/nameorganization久滴科技/organizationrolesroleMaintainer/role/roles/developer/developers项目还配置了许可证白名单管理includedLicensesincludedLicenseMIT License/includedLicenseincludedLicenseApache License, Version 2.0/includedLicenseincludedLicenseBSD 2-Clause License/includedLicense.../includedLicensesexcludedLicensesexcludedLicenseGNU Affero General Public License v3/excludedLicenseexcludedLicenseGNU General Public License v3.0/excludedLicenseexcludedLicenseServer Side Public License/excludedLicense.../excludedLicensesAGPL、GPL v3、SSPL 等具有传染性的开源协议被明确排除防止许可证风险。总结本文深入解析了久滴直播电商平台的工程架构设计三层模块结构dependencies版本管理→ framework技术框架→ module业务实现api/biz 分离接口层和实现层分离避免模块间循环依赖${revision}统一版本配合 flatten-maven-plugin改一处即全量生效Open Core 双仓Community 开源核心 Pro 商业增值共享基础代码合规性保障保留原作者信息、许可证白名单管理、MIT/EULA 双许可证声明下一篇我们将走进直播营销联动看看秒杀和优惠券如何推送到直播间弹幕流。久滴直播电商平台是一个基于 Spring Boot 3 Vue3 UniApp 的全栈开源直播电商解决方案。 GitHubhttps://github.com/jiudi-dev/live-mall-communityCommunity 版如果觉得本文对你有帮助欢迎 Star ⭐ 支持

相关新闻

python xml Python玩XML:SAX才是王道,DOM内存爆炸你怕不怕?

python xml Python玩XML:SAX才是王道,DOM内存爆炸你怕不怕?

资深软件开发工程师,业余马拉松选手。 XML虽说比JSON要来得更加复杂些, 于Web里的应用也不像先前那般多了, 然而依旧存在着不少地方在使用它, 因此, 很有必要知悉怎样对XML进行操作。 DOM vs SAX 解析XML, 存在着两种办法, 分别是DOM以及SAX。DOM会将整个XML读进…

2026/8/8 14:02:51 阅读更多 →
Python与PyCharm专业版完整安装激活指南:从环境配置到教育许可

Python与PyCharm专业版完整安装激活指南:从环境配置到教育许可

这次我们来看一个 Python 和 PyCharm 的完整安装与激活方案。对于刚入门编程或者需要配置新环境的开发者来说,最头疼的往往不是写代码,而是第一步——如何把 Python 解释器和 PyCharm 这个强大的 IDE 正确、稳定地装好,并且能长期使用。网上教…

2026/8/8 10:03:02 阅读更多 →
【一看就会】【nav2源码解析系列】【第三篇】--【基础算法实现类】--【控制类】--nav2_dwb_controller模块

【一看就会】【nav2源码解析系列】【第三篇】--【基础算法实现类】--【控制类】--nav2_dwb_controller模块

文章目录前言一、包结构二、输入输出核心输入输出三、代码逻辑流程第一层:外层computeVelocityCommands第二层:内层computeVelocityCommands第一步:填 results 头部(可选):如果用户请求记录评估结果&#x…

2026/8/8 10:24:27 阅读更多 →

最新新闻

C++控制台游戏开发:三种运行时动态调整字体大小的实战方法

C++控制台游戏开发:三种运行时动态调整字体大小的实战方法

1. 项目概述:为什么控制台字体大小对C游戏开发如此重要? 如果你正在用C写控制台游戏,无论是贪吃蛇、俄罗斯方块,还是更复杂的RPG或Roguelike,你很可能已经遇到了一个看似微小却极其影响体验的问题:控制台里…

2026/8/8 14:03:23 阅读更多 →
laravel中moudle模块多很慢nwidart/laravel-modules有40个如何优化FileRepository的scan用php.ini缓存opcache

laravel中moudle模块多很慢nwidart/laravel-modules有40个如何优化FileRepository的scan用php.ini缓存opcache

laravel中moudle模块多很慢nwidart/laravel-modules有40个如何优化以文件http://usr/local/php/etc/php.ini中开启以下配置zend_extensionopcacheopcache.enable1 opcache.enable_cli0 opcache.memory_consumption256 opcache.interned_strings_buffer32 opcache.max_accelerat…

2026/8/8 14:03:23 阅读更多 →
GeoGebra:从动态几何到全能数学实验室的深度解析与实战指南

GeoGebra:从动态几何到全能数学实验室的深度解析与实战指南

1. 项目概述:从“动态几何”到“全能数学实验室”如果你是一位数学老师,或者正在学习数学的学生,又或者是对数学可视化感兴趣的爱好者,那么“GeoGebra”这个名字你一定不陌生。它早已不是十年前那个单纯的“动态几何”软件了。今天…

2026/8/8 14:03:23 阅读更多 →
低代码集成!RPA 企业微信第三方 API,外部群主动调用快速落地

低代码集成!RPA 企业微信第三方 API,外部群主动调用快速落地

在企业数字化转型加速的当下,“想做自动化运营却缺技术团队、官方接口部署周期长、定制开发成本高”,成为很多企业在企业微信外部群运营中面临的核心困境。尤其对于中小微企业或非技术驱动型团队,即便深知 “外部群主动调用” 能提升私域效率…

2026/8/8 14:03:23 阅读更多 →
CTF竞赛逆向工程与电子取证工具全解析

CTF竞赛逆向工程与电子取证工具全解析

1. CTF竞赛工具全景图:从逆向工程到电子取证的装备库 作为一名打了七年CTF的老兵,我深刻体会到工具选型对比赛效率的直接影响。记得2019年某次线下赛,因为取证工具链配置不当,我们团队在文件恢复环节浪费了整整两小时。本文将系统…

2026/8/8 14:03:23 阅读更多 →
你的微信记忆会消失吗?用这个开源工具永久保存每一刻对话

你的微信记忆会消失吗?用这个开源工具永久保存每一刻对话

你的微信记忆会消失吗?用这个开源工具永久保存每一刻对话 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/We…

2026/8/8 14:02:23 阅读更多 →

日新闻

AI多智能体时代来临,读懂MCP与A2A架构,抢占企业数字化新风口

AI多智能体时代来临,读懂MCP与A2A架构,抢占企业数字化新风口

当下AI应用飞速普及,无数企业下场搭建智能体系统,可落地阶段难题接踵而至:上下文无限堆积频繁爆栈、AI工具调用准确率低下、Token成本居高不下、企业数据权限混乱暗藏安全隐患……很多团队卡在架构搭建环节,空有前沿技术概念&…

2026/8/8 0:00:07 阅读更多 →
PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码

PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码

PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码 【免费下载链接】php-qrcode A PHP QR Code generator and reader with a user-friendly API. 项目地址: https://gitcode.com/gh_mirrors/ph/php-qrcode 在当今数字时代,二维码已…

2026/8/8 0:00:08 阅读更多 →
UniApp微信小程序隐私保护组件开发:从原理到实战

UniApp微信小程序隐私保护组件开发:从原理到实战

1. 项目缘起:为什么我们需要一个隐私保护通用组件?最近在维护一个基于uniapp开发的微信小程序矩阵时,我遇到了一个非常棘手的问题。随着平台对用户隐私保护的要求越来越严格,几乎每一个新版本发布,或者在某些特定机型&…

2026/8/8 0:00:08 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/6 22:02:27 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/8 8:58:26 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/7 23:24:08 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/7 17:02:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/7 23:54:54 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/7 17:02:36 阅读更多 →