【问题标题】:How can I build in sbt with an unreleased version of the Scala standard library?如何使用未发布版本的 Scala 标准库构建 sbt?
【发布时间】:2018-10-18 22:34:58
【问题描述】:

我想使用Scala 2.13.xx 的标准库来使用最新未发布版本的并发库。 我试过用它:

scalaVersion := "2.13.0-M1"

这导致: [error] sbt.librarymanagement.ResolveException: unresolved dependency: com.twitter#util-collection_2.13.0-M1;18.9.1: not found [error] unresolved dependency: org.scala-stm#scala-stm_2.13.0-M1;0.8: not found [error] unresolved dependency: org.scalactic#scalactic_2.13.0-M1;3.0.5: not found [error] unresolved dependency: org.scalatest#scalatest_2.13.0-M1;3.0.5: not found [error] unresolved dependency: com.storm-enroute#scalameter_2.13.0-M1;0.8.2: not found

有什么方法可以将最新的未发布版本的 Scala 标准库与 sbt 一起使用,还是因为不是使用 Scala 2.13.xx 构建的依赖关系而无法使用?

【问题讨论】:

  • 请注意,当前的 Scala 2.13 里程碑是 2.13.0-M5。要查看可用于 M5 的库,请参阅 github.com/scala/make-release-notes/blob/2.13.x/…。它包括一个指向 twitter/util 票证的链接,表明他们还没有为 M5 发布,scala-stm 也没有。
  • 您想要使用 2.13 里程碑的目标是什么?如果不知道你的实际动机是什么,很难就此给出具体建议
  • 我想用最新的future和promise库,谢谢,我会用最新的里程碑。

标签: scala sbt


【解决方案1】:

设置scalaVersion 将同时使用该版本的编译器和标准库。

但是任何依赖项都需要使用二进制兼容的 Scala 版本构建。对于里程碑,这只是同一个里程碑。如果您查看 https://mvnrepository.com/artifact/org.scalactic/scalactic 等,除了 ScalaMeter 和 util-collection 之外,它们都发布了 2.13.0-M2 的版本。

对于缺少的依赖项,您可以获取源代码,更改他们的 scalaVersion 并使用sbt publishLocal(如果其中任何一个使用 SBT 以外的构建系统,则使用等效项)。希望他们能够在不更改源代码的情况下构建和工作。

从技术上讲,您可以也可以使用

仅更改标准库版本
autoScalaLibrary := false
libraryDependencies += "org.scala-lang" % "scala-library" % "2.13.0-M1" % "test"

但这不太可能运作良好(如果有的话)。

【讨论】:

    猜你喜欢
    • 2017-10-28
    • 2013-01-25
    • 1970-01-01
    • 2018-02-08
    • 2017-05-31
    • 1970-01-01
    • 1970-01-01
    • 2018-08-06
    • 2011-06-01
    相关资源
    最近更新 更多