多模块Maven项目中如何获取各模块Maven Build Cache Extension缓存命中率指标?
获取多模块Maven项目的缓存命中率指标
针对Maven Build Cache Extension 1.2.0 + Maven 3.9.9的多模块项目,有三种直接可行的方式获取每个模块的缓存命中率:
1. 通过详细日志直接查看
启用缓存扩展的 verbose 日志或Maven调试日志,就能在输出中看到每个模块的缓存命中/未命中记录:
- 执行构建时添加参数:
mvn clean install -Dmaven.build.cache.verbose=true - 或者开启Maven全局调试日志:
mvn clean install -X - 日志中会出现类似以下的条目:
Cache hit for module: com.example:module-a
Cache miss for module: com.example:module-b (原因:源码文件修改) - 可以通过 grep/awk 等命令行工具过滤并统计每个模块的命中次数,比如:
mvn clean install -Dmaven.build.cache.verbose=true 2>&1 | grep "Cache hit for module" | awk '{print $5}' | sort | uniq -c
2. 生成结构化缓存统计报告
缓存扩展支持生成JSON格式的统计报告,包含每个模块的详细缓存指标:
- 构建时指定统计输出文件参数:
mvn clean install -Dmaven.build.cache.statsOutputFile=cache-stats.json - 生成的
cache-stats.json文件中,每个模块的条目会包含hitCount、missCount、skippedCount等字段,直接计算命中率即可(命中率=hitCount/(hitCount+missCount))。
3. 监听缓存事件自定义收集(进阶)
如果需要将指标集成到监控系统,可以通过监听缓存扩展的事件来收集数据:
- 编写一个简单的Maven扩展,注册
CacheHitEvent、CacheMissEvent的监听器 - 在监听器中捕获模块ID和事件类型,累计每个模块的命中/未命中次数
- 最后将统计数据输出到指定位置或发送到监控平台
内容的提问来源于stack exchange,提问作者tuk
相关产品推荐
相关产品推荐

