如何将20模块Maven项目构建时间从50分钟缩短到12分钟?有妙招吗?
- 内容介绍
- 文章标签
- 相关推荐
文章浏览阅读241次点赞3次收藏6次。Java项目构建工具是工程项目化开发的基础设施。传统方式Maven凭借约定优于配置和统一坐标体系成为主流, 即便是... 但面对更多模块项目时XML配置冗较长、依赖冲突排查棘手、构建速度缓慢等痛点日益突出。
一、从痛点说起:为哪些一次构建会耗时50分钟?
当我第一次接手当前这个20模块的后台系统时 我就被那句“刚启动只想跑个jar,却要等半个较小时才能看到最终还是结果是”的事实震惊了。原因其实很简洁:Maven默认是串行落实各个模块的生命周期;各个模块都要下载其全部依赖, 再落实编译/测试/打包;而且测试阶段往往把全部单元测试聚合在同一个模块里各个测试类都要启动一个JVM来加载Spring上下文,引起耗时暴涨,试着...。

我记住那天晚上加班到凌晨两点, 看着控制台里不断滚动的“Downloading …”,心里暗暗咒骂:“这算哪些工程项目化?到底谁在背后安排这么缓慢?”于是我决定做一次彻底的调研和整改。
二、 并行构建——开启更多核时代的第一步
Maven自1.5版本起就支持并行构建,中, 把默认串行改为“-T4C”, 百感交集。 整个build时间段从50分钟压缩到约15分钟,节省了近70%的时间段。
- -T n:固定n个线程 -T nC:按CPU核心数 -T nG:按可用内存
- Maven Reactor图:只有无循环依赖关系的模块才能够真实正并行, 如果存在循环或较深度嵌套,仍会出现阻塞。
- CACHE & SNAPSHOT策略:对频繁变更的SNAPSHOT版本启用本地缓存,可避免反复下载。
1️⃣ 调整坚硬件匹配:让CPU真实正发挥实际价值
你我共勉。
文章浏览阅读241次点赞3次收藏6次。Java项目构建工具是工程项目化开发的基础设施。传统方式Maven凭借约定优于配置和统一坐标体系成为主流, 即便是... 但面对更多模块项目时XML配置冗较长、依赖冲突排查棘手、构建速度缓慢等痛点日益突出。
一、从痛点说起:为哪些一次构建会耗时50分钟?
当我第一次接手当前这个20模块的后台系统时 我就被那句“刚启动只想跑个jar,却要等半个较小时才能看到最终还是结果是”的事实震惊了。原因其实很简洁:Maven默认是串行落实各个模块的生命周期;各个模块都要下载其全部依赖, 再落实编译/测试/打包;而且测试阶段往往把全部单元测试聚合在同一个模块里各个测试类都要启动一个JVM来加载Spring上下文,引起耗时暴涨,试着...。

我记住那天晚上加班到凌晨两点, 看着控制台里不断滚动的“Downloading …”,心里暗暗咒骂:“这算哪些工程项目化?到底谁在背后安排这么缓慢?”于是我决定做一次彻底的调研和整改。
二、 并行构建——开启更多核时代的第一步
Maven自1.5版本起就支持并行构建,中, 把默认串行改为“-T4C”, 百感交集。 整个build时间段从50分钟压缩到约15分钟,节省了近70%的时间段。
- -T n:固定n个线程 -T nC:按CPU核心数 -T nG:按可用内存
- Maven Reactor图:只有无循环依赖关系的模块才能够真实正并行, 如果存在循环或较深度嵌套,仍会出现阻塞。
- CACHE & SNAPSHOT策略:对频繁变更的SNAPSHOT版本启用本地缓存,可避免反复下载。
1️⃣ 调整坚硬件匹配:让CPU真实正发挥实际价值
你我共勉。

