SBT无法将Seq [Object]附加到Seq [ModuleID]

时间:2015-03-27 22:40:23

标签: scala sbt

SBT因不正确的追加错误而失败。我使用了很多次看到的构建文件的确切格式。

build.sbt:

lazy val backend = (project in file("backend")).settings(
name := "backend",
libraryDependencies ++= (Dependencies.backend)
).dependsOn(api).aggregate(api)

dependencies.scala:

import sbt._

object Dependencies {

lazy val backend = common ++ metrics

val common = Seq(
"com.typesafe.akka" %% "akka-actor" % Version.akka,
"com.typesafe.akka" %% "akka-cluster" % Version.akka,
"org.scalanlp.breeze" %% "breeze" % Version.breeze,
"com.typesafe.akka" %% "akka-contrib" % Version.akka,
"org.scalanlp.breeze-natives" % Version.breeze,
"com.google.guava" % "guava" % "17.0"
)

val metrics = Seq("org.fusesource" % "sigar" % "1.6.4")

我不是为什么SBT抱怨

error: No implicit for Append.Values[Seq[sbt.ModuleID], Seq[Object]] found,
so Seq[Object] cannot be appended to Seq[sbt.ModuleID]
libraryDependencies ++= (Dependencies.backend)
                    ^

2 个答案:

答案 0 :(得分:14)

短版本(TL; DR)

common出现错误:您想要替换此行

"org.scalanlp.breeze-natives" % Version.breeze,

这一行

"org.scalanlp" %% "breeze-natives" % Version.beeze,

长版

  1. "org.scalanlp.breeze-natives" % Version.breezeGroupArtifactID而不是ModuleID

  2. 这会导致common成为Seq[Object]而不是Seq[ModuleID]

  3. 因此Dependencies.backend也是Seq[Object]

  4. 最终无法通过++=附加到libraryDependencies(定义为SettingKey[Seq[ModuleID]]),因为没有可用的Append.Values[Seq[sbt.ModuleID], Seq[Object]]

答案 1 :(得分:1)

commonmetrics中的一个不是Seq[sbt.ModuleID]。你可以找出哪种类型的归属:

val common: Seq[sbt.ModuleID] = ...
val metrics: Seq[sbt.ModuleID] = ...

我的资金在common,此行中没有足够的%

"org.scalanlp.breeze-natives" % Version.breeze