如何使用未发布的Scala标准库版本构建sbt?

时间:2018-10-18 14:08:17

标签: scala sbt

我想使用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

是否可以通过sbt使用最新的未发布版本的Scala标准库,或者由于依赖关系不是由Scala 2.13.xx构建的而不可能吗?

1 个答案:

答案 0 :(得分:4)

设置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"

但这不太可能很好(如果有的话)。