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
。
从 sbt 1.4.0 开始,我们正在重新使用 Maven 发布和解析机制来交换缓存的构建输出。这很可能很容易使用现有基础设施(如 Bintray)开始使用。
将来,我们可能会考虑更简单的缓存服务器,例如使用 PUT
和 GET
的普通 HTTP 服务器。这将需要有人在某个地方托管 HTTP 服务器,但配置它们可能会变得更简单。
为了抽象出特定于机器的路径,例如工作目录和 Coursier 缓存目录,sbt 在 ThisBuild / rootPaths
中保留了一个根路径映射。如果您的构建为您的源代码或输出目录添加了特殊路径,请将它们添加到 ThisBuild / rootPaths
中。
如果您需要确保 ThisBuild / rootPaths
包含所有必要的路径,您可以将 ThisBuild / allowMachinePath
设置为 false
。
从 sbt 1.4.2 开始,remoteCacheId
使用输入源的内容哈希的哈希。