【问题标题】:What are the use cases for sbt-cross-building in sbt 0.13?sbt 0.13 中 sbt-cross-building 的用例是什么?
【发布时间】:2014-06-04 14:11:43
【问题描述】:

With the recent issue reported against sbt-cross-building.value 宏用于属性时会出错),我想知道 sbt 0.13.2 及更高版本的插件的用例是什么?内置的crossScalaVersions 设施还不够吗(如Cross-building 中所述)?

哪些用例需要在 sbt 0.13 及更高版本中存在 sbt-cross-building 插件?

【问题讨论】:

  • 从未使用过。但我认为crossScalaVersions 可以让您为多个 Scala 版本构建项目,而 sbt-cross-building 让您可以为多个 sbt 版本构建插件?这些看起来完全不同。 (而且我猜有些人还在使用 0.12.x,所以需要为 0.12 和 0.13 发布插件。)
  • 这反映了我的观点。我想知道最近发布的 sbt 是否有一个“有福的”解决方案,因为插件做了很多 sbt 重新布线/写入,导致迁移到 0.13 非常痛苦。
  • @SethTisue 你是对的 - 它是一个用于构建插件的插件。

标签: scala sbt


【解决方案1】:

sbt-cross-building 就像一个音乐家的音乐——一个插件作者的插件。由于 sbt 现在在次要版本之间保持二进制兼容性,现在对 sbt-cross-building 的需求减少了,但它曾经是 sbt 插件作者的常规仪式,每次 sbt 版本发布时重新发布。所以当这个插件问世时,它曾经是我最喜欢的插件。

甚至有人谈论将插件合并到 sbt 母舰中,但之前的 sbt 所有者提出了一种机制,可以从 sbt 0.12.4 交叉发布 sbt 0.13 插件:

sbtVersion in Global := "0.13.0-RC1" 

scalaVersion in Global := "2.10.2"

这工作得很好,以至于 sbt-cross-publishing 在 0.12 到 0.13 跳跃期间错过了浪潮。 sbt-cross-publishing 的一个简洁功能是您可以创建用于特定 sbt 版本的自定义 Scala 源目录。即使从 sbt 方面破坏了源代码级兼容性,这也允许使用单个插件代码库。

跨 sbt 版本的交叉构建的概念非常有用,就像跨 Scala 版本的交叉构建一样。同时,部分由于次要版本的停滞,主要版本的跳跃足够大,以至于我维护的许多插件都需要削减新版本以利用新的 Scala 版本、库、DSL 语法等。

【讨论】:

  • 谢谢尤金!我认为随着 Scala 2.11 和 sbt 0.13.2 的推出,插件的使用将会减少,因为代码似乎没有大量更新。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-30
  • 2013-12-29
  • 2013-09-03
  • 1970-01-01
  • 1970-01-01
  • 2012-01-29
相关资源
最近更新 更多