You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Sbt Remote Caching时Scoverage覆盖率数据丢失,如何缓存相关文件?

解决Sbt Remote Caching与Scoverage结合时覆盖率数据丢失的问题

可以将scoverage的测量文件纳入远程缓存范围,通过配置Sbt的远程缓存规则即可解决你遇到的FileNotFoundException问题。以下是具体配置和注意事项:

配置远程缓存包含scoverage文件

在你的build.sbt中添加以下配置,将scoverage的测量文件目录纳入远程缓存的包含列表:

ThisBuild / remoteCacheIncludes += "target/scala-*/scoverage-data/**"

这个规则会匹配所有Scala版本目录下的scoverage-data文件夹中的所有文件(包括那些带UUID命名的scoverage.measurements.*文件),确保这些文件在推送缓存时被上传,拉取缓存时被下载到本地。

错误原因说明

你遇到的文件找不到错误,是因为拉取远程缓存后,本地缺少测试执行时需要的scoverage测量文件。Scoverage在测试运行时会写入这些测量文件,后续步骤(比如生成覆盖率报告)需要读取这些文件,若缓存未包含它们,就会触发FileNotFoundException。

额外注意事项

  • 合并测量文件:如果多次测试运行生成多个测量文件,Scoverage默认会合并这些文件生成最终报告,缓存包含所有文件后不会影响报告生成。
  • CI环境验证:在CI环境中,确保远程缓存的推拉步骤正确应用了上述include规则,避免CI脚本遗漏相关配置。
  • 测试验证:配置完成后,可通过以下流程验证:
    1. 本地运行测试生成scoverage文件
    2. 推送远程缓存
    3. 清理本地target目录
    4. 拉取远程缓存
    5. 重新运行测试或生成覆盖率报告,确认不再报错

内容的提问来源于stack exchange,提问作者ClassNotFoundException

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 02:41:58