Maven多模块依赖管理与私有JAR包策略

复制代码
---
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 版本差异)
- 缺少统一的依赖更新策略和安全漏洞扫描机制
相关推荐
珍珠先生1 小时前
第17章 集合框架:Map
java
伯远医学1 小时前
RIP-seq 高分文献案例分享
java·前端·javascript·人工智能·算法·eclipse·html
吃杠碰小鸡1 小时前
VsCode中使用Java
java·vscode
lq_bog1 小时前
spring事务失效
java·数据库·spring
API快乐传递者1 小时前
淘宝京东数据分析实战指南:从指标体系到决策落地的全链路方法论
java·大数据·数据分析
vancece1 小时前
JS实现堆 & 215.数组中的第K个最大元素
java·前端·javascript
就叫_这个吧1 小时前
java springcloud熔断降级组件sentinel基础应用及nacos持久化处理
java·spring cloud·nacos·sentinel
SimonKing1 小时前
Apache Fory JSON或许可以替代FastJson
java·后端·程序员
程序员良辰2 小时前
【TongWeb7的M11】 首次登录密码修改 & 开启控制台远程访问
java·中间件·tomcat