---
kind: dependency_management
name: Maven多模块依赖管理与私有JAR包策略
slug: dependency_management
category: dependency_management
scope:
- '**'
---
该项目采用 Maven 多模块聚合架构进行依赖管理,核心模式如下:
**1. 统一版本管理(BOM模式)**
根 `pom.xml` 通过 `<dependencyManagement>` 集中声明所有公共依赖的版本号,包括 Spring Boot 2.1.0.RELEASE、MyBatis-Plus 3.5.1、Hutool 5.8.22、Lombok 1.18.28、Spring Cloud Alibaba 2.1.4.RELEASE 等。子模块仅引用 groupId/artifactId 而不指定 version,由父 POM 统一管理。
**2. 多模块依赖关系**
项目包含 12 个子模块(common、auth、gateway、sales、biz、production、chr、factorydata、socket、report、factorytransmit),其中 common 作为基础组件库被其他模块广泛依赖,形成清晰的层次依赖结构。
**3. 私有JAR包本地引入策略**
在 `sales/pom.xml` 中发现使用 `<scope>system</scope>` + `<systemPath>` 方式直接引入本地 JAR 文件:
- `kye-openapi-sdk-2.3.1-SNAPSHOT.jar`
- `doudian-sdk-java-1.1.0-20251209170914.jar`
- `dop-sdk-0.0.1-SNAPSHOT.jar`
这些私有 SDK 通过 `spring-boot-maven-plugin` 的 `includeSystemScope=true` 配置打包进最终 JAR。
**4. 仓库配置**
部分模块(如 sales、socket)在各自 pom.xml 中配置了阿里云 Maven 镜像 `https://maven.aliyun.com/repository/public`,但未发现全局 `.m2/settings.xml` 配置。
**5. Python依赖管理**
项目根目录存在 `requirements.txt`,使用 pip 管理 Python 测试依赖,但版本约束较宽松(pytest>=7.0.0, allure-pytest>=2.13.0),仅 requests 固定为 2.27.1 以兼容 Python3.6。
**6. 依赖冲突处理**
- 显式排除传递依赖:如 Nacos Discovery 中排除 nacos-client,Flowable 中排除 mybatis
- 版本覆盖:如 Lombok 在 sales 模块中单独指定 1.18.26 版本
- BC加密库重复声明:在 common 和根 POM 中都声明了 Bouncy Castle 相关依赖
**主要问题:**
- 私有JAR包使用 system scope 不利于团队协作和CI/CD
- 部分依赖版本在各模块间不一致(如 Swagger 版本差异)
- 缺少统一的依赖更新策略和安全漏洞扫描机制
Maven多模块依赖管理与私有JAR包策略
LINgZone22026-08-26 11:04
相关推荐
郑州光合科技余经理17 小时前
本地生活系统:多业务订单字段怎么分账本导出YangYang9YangYan18 小时前
2026 校招审计风控岗位 JD 拆解,工具、专业能力与面试考点wuminyu1 天前
Kafka中sendfile与mmap实现机制解析考虑考虑1 天前
Java实现hmacsha256加密算法captain3761 天前
▲网络原理(2)-TCPMetaLite1 天前
SpringBoot接口分层规范-外网网关内部服务与参数边界Co_Hui1 天前
Java 线程状态土司大王1 天前
LeetCode hot100——35.搜索插入位置:Java 二分模板、左闭右开区间与插入点分析土司大王1 天前
LeetCode hot100——34.在排序数组中查找元素的第一个和最后一个位置:Java 二分模板、边界分析金金计较.1 天前
Go语言-3