【问题标题】:how does the sbt plugin versioning scheme worK?SBT插件版本控制方案如何工作?
【发布时间】:2018-10-09 09:26:52
【问题描述】:

对于 sbt 0.13,我们发布了版本为 0.13 的 sbt 插件,对于 sbt 1.0.x,我们发布了版本为 1.0 的 sbt 插件。然而,对于 sbt 1.1.x,似乎我们也发布了 1.0 版本的 sbt 插件。例如,最新的 sbt-site 发布了1.1.x version,但它只发布了0.13 and 1.0 versions。 sbt 插件版本控制如何在 sbt 1.x.x 中工作?

【问题讨论】:

  • 我不了解sbt,但是对于很多项目来说,API的版本和API的实现版本是有区别的。所以,我猜 sbt 1.1 实现了 sbt 插件 API 规范的 1.0 版。

标签: scala sbt


【解决方案1】:

将 sbt 1.x 的 sbt 插件版本化为 1.0 是一个错误。版本控制应该是 1,因为 sbt 1.x 系列保证保持向后二进制兼容。

在 sbt 存储库中查看此问题:https://github.com/sbt/sbt/issues/3858

这意味着,出于所有实际(和理论)目的,当您阅读 sbt 插件版本方案中的 1.0 时,您应该考虑 1(或者如果您愿意,也可以考虑 1.x)。

【讨论】:

    【解决方案2】:

    1.0 之前的版本控制 API 不能保证是稳定的(在主要版本内)。 sbt 在次要版本上进行了迭代,因此在 0.12 和 0.13 行之间可能会出现重大更改 - 尽管如果开发人员没有为表带来任何价值,并且在次要版本行(例如 0.13.0、0.13. 1, 0.13.2, ... 0.13.15) 他们尽最大努力不破坏更改。

    0.13.x 线实际上有点稳定 - 大多数时候你可以升级没有太多问题,而且(我在这里可能错了,但是)通常任何制动变化要么是错误,要么是对无效行为的修复。

    1.0 破坏了与 0.13 的兼容性。最大的变化是从 Scala 2.10 到 Scala 2.12。由于它被认为是实际的、成熟的版本,作者可以在主要版本中提交并保证向后兼容性,因此为 1.0 编写的插件将适用于 1.1、1.2 等。我记得的一个例外是在 1.1.2 中添加了统一的斜杠语法 - 如果你在您的构建或插件中使用它会强制使用 sbt 至少 1.1.2。除此之外,我不记得有什么大事了。

    由于从 0.13 到 1.0 的变化对社区来说是一个相当大的变化(基本上每个插件都需要迁移和/或交叉编译),有些人可能会在 0.13 行停留一段时间。这就是它仍然受到支持的主要原因。

    出于任何实际目的,我假设现在您可以发布和使用任何适用于 0.13 和最新 0.13 版本的插件,并且任何为 1.0 发布的插件(不使用统一斜杠语法)都可以被任何 1.0 版本使用: 1.0.x, 1.1.x, 1.2.x, ...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-10
      • 1970-01-01
      • 1970-01-01
      • 2020-02-22
      • 2016-12-13
      • 2021-05-17
      相关资源
      最近更新 更多