
SSD vs HDD:将 Maven 本地仓库(默认 ~/.m2/repository)迁移至 NVMe SSD,可将磁盘 I/O 延迟降低 5-10 倍。对大型依赖拉取和插件加载尤为显著。
自定义路径:在 ~/.m2/settings.xml 中添加:
<settings>
<localRepository>/mnt/fastssd/maven-repo</localRepository>
</settings>安装:在项目根 pom.xml 中加入:
<build>
<extensions>
<extension>
<groupId>org.apache.maven.buildcache</groupId>
<artifactId>maven-buildcache-extension</artifactId>
<version>1.1.0</version>
</extension>
</extensions>
</build>原理:对每个模块的编译、测试、打包产物计算哈希,并缓存至本地或远程。若输入(源码、依赖)未变化,直接复用上一次结果。
远程缓存:结合 Nexus/Artifactory,配置 settings.xml 指向远端缓存服务:
<profiles>
<profile>
<id>remote-cache</id>
<properties>
<buildCache.remote.url>http://nexus.local/repository/maven-buildcache/</buildCache.remote.url>
<buildCache.remote.namespace>project-a</buildCache.remote.namespace>
</properties>
</profile>
</profiles>
<activeProfiles><activeProfile>remote-cache</activeProfile></activeProfiles>注意:版本兼容需与 Maven 3.8+ 配合使用;首次全量构建耗时会增加,后续收益可观。
-T 参数详解# 使用固定线程数
mvn clean install -T 8
# 基于 CPU 核心数自动分配
mvn clean install -T 1C # 每核心1线程
mvn clean install -T 2C # 每核心2线程-T 1C 即可达到最佳性能,过高可能引发资源争抢。按需构建:结合 -pl/--projects 和 --also-make 精准定位变更模块,避免全量。
mvn install -pl module-user,module-order --also-make增量构建:在本地配合 mvn validate -am 仅检查依赖变更,快速反馈。
mvn dependency:analyze 可以检测未使用或声明缺失的依赖。
结合 dependency:tree -Dverbose 定位冲突或冗余:
mvn dependency:tree -Dverbose -Dincludes=com.google.guava:guavaprovided 或 test。<exclusions> 去掉传递依赖中不必要的模块,减少解析时间。镜像聚合:配置仓库组,将中央、私服、第三方仓库统一对外提供。简化 <mirror>:
<mirror>
<id>internal</id>
<mirrorOf>*</mirrorOf>
<url>http://nexus.local/repository/maven-public/</url>
</mirror>分层缓存:将 SNAPSHOT、RELEASE 分别设立不同策略:SNAPSHOT 保留 7 天,RELEASE 永久缓存。
在 CI Pipelines 中添加脚本:
xargs -a dependencies.txt -n1 mvn dependency:get自定义 Maven 构建基础镜像,加入热门依赖和构建工具,减少 Job 启动时的冷启动时间。
按需阶段:CI 常用 clean compile test package,跳过 site, deploy:
mvn clean package -DskipTests -DskipSite -DskipDeploy并行测试:使用Surefire和Failsafe插件参数,实现多线程测试:
<configuration>
<parallel>classes</parallel>
<threadCount>4</threadCount>
</configuration>invoker:run 或者 profile 控制,在夜间构建中执行低频插件。环境:Intel Xeon 8C/16T, 32GB RAM, NVMe SSD, Maven 3.8.6, JDK11。
测试场景 | 优化前 | 优化后 | 加速比 | |
|---|---|---|---|---|
全量 clean install | 360s | -T 1C + 缓存 +排除冗余 | 160s | 2.25× |
增量 install -pl | 120s | -T 1C + 缓存复用 | 50s | 2.4× |
依赖拉取(首次) | 120s | 预热脚本 + 镜像预构建 | 20s | 6× |
并行测试 | 200s | Surefire 并行测试 (threadCount=4) | 80s | 2.5× |
综合效果:将 CI 构建时长从 6 分钟 缩短至 2 分钟 内。