---
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
相关推荐
Wang's Blog5 小时前
Java 项目实战: 外卖平台优化-Nginx配置文件结构与块层级\光辉岁月/6 小时前
5.java-数组谢亮_vipxieliang6 小时前
Spring 事务失效的常见场景郑州光合科技余经理7 小时前
海外版外卖加盟:总站与分站配送规则怎么分开管2601_962071577 小时前
类变量和全局变量的生命周期有什么区别?code2cat7 小时前
Java进阶篇之AtomicReference:一次替换引用,读到一份完整状态专业程序开发源7 小时前
springboot简历管理系统81389-计算机课程设计、毕业设计Wang's Blog7 小时前
Java 项目实战: 外卖平台优化-前后端分离开发模式与工程拆分HEJOO98 小时前
指针的算术运算详解sunshine22 girl8 小时前
Java学习六 Java常见API-2--String-3-字符串的截取替换和其他方法