Package net.fabricmc.loom.util.cache
Class JarReusability
java.lang.Object
net.fabricmc.loom.util.cache.JarReusability
「产物可作为输入复用」的判定工具:把 jar/zip 的内容校验收敛到唯一实现.
共享缓存里的产物可能被其它进程写坏:仍在用「先删除再就地写」的旧版本 loom 会在替换窗口内让目标路径 出现 22 字节的空 zip(本仓库实测到的形态),进程被中断还会留下截断文件。只做存在性判定会把这种半成品 当成就绪产物,一路传到最终产物里,形成「标记是新的、内容是坏的」的静默损坏。因此这里的口径是: 能作为 zip 打开(中央目录完整),且至少含一个条目(不是空 zip 壳)。
该口径只拒绝「已经损坏」的产物:正常写入流程(临时文件 + 原子落位)产生的 jar 必然满足它, 所以不会把正常产物永久判为不可用、把读方拖进「每次构建都重建」的循环。
普通 .zip(例如 mcp.zip)与 jar 走的是同一条 zipfs 路径,同样适用本判定。
-
Method Summary
Modifier and TypeMethodDescriptionstatic booleanisReusable(Path jar) Returns 该 jar/zip 是否可作为输入复用.
-
Method Details
-
isReusable
Returns 该 jar/zip 是否可作为输入复用..- Parameters:
jar- 待判定的产物路径- Returns:
- 该 jar/zip 是否可作为输入复用
-