1. 开发人员指南(正在开发中)

开发人员指南(正在开发中) 

这是关于 sbt 未来架构的文档集。本文件的目标受众是 sbt 插件作者和 sbt 开发人员。另请参阅 如何提供帮助?

迈向 sbt 1.0 

在 2008-12-18,Mark Harrah 宣布 sbt 0.3.2 作为 sbt 的初始版本。Mark 一直是 sbt 的主要作者,直到 sbt 0.13.1(2013-12-11)。在 2014 年,sbt 项目移交给了本文档的作者 Josh Suereth 和 Eugene Yokota。

随着我们迈向 sbt 1.0,我们希望稳定已有的稳定部分,并在重要的地方进行创新。稳定性有几个级别

  • 概念稳定性
  • 构建定义的源代码兼容性
  • 插件的二进制兼容性

概念 

从概念上讲,sbt 在其功能上一直很稳定

  1. 支持 Scala 的增量编译
  2. 了解 Scala 二进制兼容性的依赖项管理
  3. 使用 Scala 可扩展的任务和插件系统
  4. 基于文本的交互式 shell

我们计划更改的唯一部分是最后一点。在 sbt 1.0 中,我们将用 sbt 服务器替换交互式 shell,该服务器可以通过 JSON API 和基于文本的客户端访问。

构建定义的源代码兼容性 

源代码兼容性意味着,在 sbt 版本 A 中有效的构建源代码在另一个版本 B 中无需修改即可使用。我们的目标是让 sbt 1.0 采用语义版本控制,并在 1.x.y 期间保持构建的源代码兼容性。

插件的二进制兼容性 

插件的二进制兼容性 (“bincompat”) 意味着,为 sbt 版本 A 发布的插件在另一个版本 B 中无需重新编译即可使用。截至 2015 年 3 月,sbt 0.13 已将二进制兼容性保持了 18 个月。这里的稳定性有助于维护 sbt 插件生态系统。我们的目标是让 sbt 1.0 采用语义版本控制,并在 1.x.y 期间保持构建的二进制兼容性。

从开发角度来看,维护二进制兼容性会成为一个额外的约束,无论何时进行更改,我们都需要考虑它。问题的根源在于 sbt 0.13 无法区分公共 API 和内部实现。大多数内容对插件都是开放的。