SBT [1.1.1]不同的Scala版本具有不同的libraryDependencies

时间:2018-06-27 16:44:16

标签: scala dependencies sbt

我尝试了以下方法的解决方案:SBT cross building - choosing a different library version for different scala version但是这导致了

build.sbt:27: error: No implicit for Append.Value[Seq[sbt.librarymanagement.ModuleID], sbt.Def.Initialize[sbt.librarymanagement.ModuleID]] found,
  so sbt.Def.Initialize[sbt.librarymanagement.ModuleID] cannot be appended to Seq[sbt.librarymanagement.ModuleID]
    libraryDependencies += scalaVersion(jsonDependency(_)),
                    ^
[error] sbt.compiler.EvalException: Type error in expression
[error] sbt.compiler.EvalException: Type error in expression
[error] Use 'last' for the full log.

在sbt 1.1.1中对不同Scala版本强制库依赖的正确方法是什么?

build.sbt:

libraryDependencies += scalaVersion(jsonDependency(_))

def jsonDependency(scalaVersion: String) = scalaVersion match {
  case "2.11.7" => "com.typesafe.play" %% "play-json" % "2.4.2"
  case "2.12.4" => "com.typesafe.play" %% "play-json" % "2.6.9"
}

1 个答案:

答案 0 :(得分:0)

第一行应该是:

libraryDependencies += jsonDependency(scalaVersion.value)

对于其余的部分,它对确切的Scala版本号不必要地敏感。考虑使用CrossVersion.partialVersion仅对Scala主版本敏感,如下所示:

def jsonDependency(scalaVersion: String) =
  "com.typesafe.play" %% "play-json" %
    (CrossVersion.partialVersion(scalaVersion) match {
      case Some((2, 11)) => "2.4.2"
      case _             => "2.6.9"
    })