1. 远程缓存

远程缓存 

sbt 1.4.0 / Zinc 1.4.0 对增量编译期间跟踪的文件路径进行了虚拟化,并使用内容哈希进行更改检测。通过这些组合,我们可以实现可重复构建,也称为构建为函数

这使得实验性远程缓存(缓存编译)功能成为可能。这个想法是让开发人员团队和/或持续集成 (CI) 系统共享构建输出。如果构建是可重复的,那么一台机器的输出可以在另一台机器上重复使用,这可以使构建速度显着提高。

使用 

ThisBuild / pushRemoteCacheTo := Some(MavenCache("local-cache", file("/tmp/remote-cache")))

然后从机器 1 调用 pushRemoteCache。这会将 *.class 和 Zinc 分析工件发布到该位置。接下来,从机器 2 调用 pullRemoteCache

通过 Maven 存储库进行远程缓存 

从 sbt 1.4.0 开始,我们正在重新使用 Maven 发布和解析机制来交换缓存的构建输出。这很可能很容易使用现有基础设施(如 Bintray)开始使用。

将来,我们可能会考虑更简单的缓存服务器,例如使用 PUTGET 的普通 HTTP 服务器。这将需要有人在某个地方托管 HTTP 服务器,但配置它们可能会变得更简单。

ThisBuild / rootPaths 

为了抽象出特定于机器的路径,例如工作目录和 Coursier 缓存目录,sbt 在 ThisBuild / rootPaths 中保留了一个根路径映射。如果您的构建为您的源代码或输出目录添加了特殊路径,请将它们添加到 ThisBuild / rootPaths 中。

如果您需要确保 ThisBuild / rootPaths 包含所有必要的路径,您可以将 ThisBuild / allowMachinePath 设置为 false

remoteCacheId 

从 sbt 1.4.2 开始,remoteCacheId 使用输入源的内容哈希的哈希。