我想使用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构建的而不可能吗?
答案 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"
但这不太可能很好(如果有的话)。