sbt插件版本控制方案如何工作?

时间:2018-04-28 20:48:34

标签: scala sbt

对于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?

2 个答案:

答案 0 :(得分:1)

在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,...

答案 1 :(得分: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)。