构建性能分析与调优
大型项目构建耗时长,需分析瓶颈并优化。
构建性能分析
启用调试日志
Bash
mvn clean install -X
查看关键信息
Bash
[DEBUG] Total time: 05:23 min
[DEBUG] Finished at: 2026-05-23T14:05:23
[DEBUG] Final Memory: 256M/512M
构建时间统计
显示时间
Bash
mvn clean install --batch-mode
输出:
XML
[INFO] Total time: 05:23 min
[INFO] Finished at: 2026-05-23T14:05:23
详细时间分析
Bash
mvn clean install -X | grep "time"
性能瓶颈类型
| 瓶颈 | 说明 |
|---|---|
| 依赖下载 | 网络慢、仓库远 |
| 编译 | 源码量大、编译复杂 |
| 测试 | 测试多、执行慢 |
| 打包 | 资源处理、压缩 |
依赖解析优化
使用镜像
Bash
<mirror>
<id>aliyun</id>
<mirrorOf>central</mirrorOf>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
离线模式
XML
mvn clean install -o
清理本地仓库
Bash
mvn dependency:purge-local-repository
编译优化
增量编译
Bash
<configuration>
<useIncrementalCompilation>true</useIncrementalCompilation>
</configuration>
JVM 内存
Bash
export MAVEN_OPTS="-Xmx2g -XX:+UseG1GC"
并行编译
XML
mvn clean install -T 4
测试优化
跳过测试
Bash
mvn package -DskipTests
并行测试
XML
<configuration>
<parallel>classes</parallel>
<threadCount>4</threadCount>
</configuration>
测试分组
XML
mvn test -Dgroups=fast
打包优化
资源过滤优化
Bash
<nonFilteredFileExtensions>
<extension>jpg</extension>
<extension>png</extension>
</nonFilteredFileExtensions>
跳过源码打包
XML
<execution>
<configuration>
<skipSourceJar>true</skipSourceJar>
</configuration>
</execution>
内存优化
MAVEN_OPTS 配置
| 项目规模 | 推荐 MAVEN_OPTS |
|---|---|
| 小型 | -Xmx512m |
| 中型 | -Xmx1g -XX:+UseG1GC |
| 大型 | -Xmx2g -XX:+UseG1GC |
JVM 参数
| 参数 | 说明 |
|---|---|
| -Xmx | 最大堆内存 |
| -Xms | 初始堆内存 |
| -XX:+UseG1GC | 使用 G1 垃圾回收 |
| -XX:MaxMetaspaceSize | 元空间大小 |
并行构建
-T 参数
Bash
mvn clean install -T 4 # 4线程
mvn clean install -T 1C # 每核心1线程
mvn clean install -T 2C # 每核心2线程
效果
groovy
单线程:10分钟
4线程: 4分钟(60%提升)
8线程: 2.5分钟(75%提升)
构建缓存
Maven Build Cache Extension
groovy
<extension>
<groupId>org.apache.maven.extensions</groupId>
<artifactId>maven-build-cache-extension</artifactId>
<version>1.0</version>
</extension>
缓存效果
- 跳过未变更模块
- 缓存编译产物
- 大幅缩短构建时间
性能对比基准
建立基线
groovy
# 多次构建取平均值
mvn clean install
mvn clean install
mvn clean install
记录指标
| 指标 | 说明 |
|---|---|
| Total time | 总构建时间 |
| 下载时间 | 依赖下载耗时 |
| 编译时间 | 编译阶段耗时 |
| 测试时间 | 测试阶段耗时 |
CI/CD 优化
Jenkins 配置
Bash
sh 'mvn clean install -T 2C -DskipTests'
缓存策略
text
options {
buildDiscarder(logRotator(numToKeepStr: '10'))
}
依赖预下载
text
stage('Prepare') {
steps {
sh 'mvn dependency:resolve'
}
}
性能监控工具
Maven Profiler
text
mvn clean install -Dprofile
生成性能报告。
第三方工具
- Maven Build Time Profiler
- JProfiler 分析 JVM
要点总结
- -X 启用调试日志分析性能
- 镜像加速依赖下载
- MAVEN_OPTS 配置 JVM 内存
- -T 并行构建显著提升速度
- 增量编译减少编译量
- 跳过测试快速验证
- 构建缓存进一步优化
- 建立性能基线对比优化效果
📝 发现内容有误?点击此处直接编辑