Scala 在多项目Build.sbt中分解库依赖项

Scala 在多项目Build.sbt中分解库依赖项,scala,dependencies,sbt,multi-project,Scala,Dependencies,Sbt,Multi Project,我正试图编写一个简明的multi-project Build.sbt,所以我试图将所有库依赖项放在根项目中,然后让其他人依赖它。My Build.sbt如下所示: object KataBuild extends Build { lazy val fizzBuzz = Project( id = "fizzBuzz", base = file("fizzBuzz"), settings = Project

我正试图编写一个简明的multi-project Build.sbt,所以我试图将所有库依赖项放在根项目中,然后让其他人依赖它。My Build.sbt如下所示:

object KataBuild extends Build {

        lazy val fizzBuzz = Project(
            id = "fizzBuzz", 
            base = file("fizzBuzz"),
            settings = Project.defaultSettings ++ Seq(
                name := "fizzBuzz",
                version := "1.0",
                scalaVersion := "2.10.3"
            )
        )

        lazy val kata = Project(
            id = "scala-kata", 
            base = file("."),
            settings = Project.defaultSettings ++ Seq(
                name := "scala-kata",
                version := "1.0",
                scalaVersion := "2.10.3",
                libraryDependencies ++= Seq(
                    "org.scalatest" %% "scalatest" % "2.1.0" % "test"
                )
            )
        ) aggregate(fizzBuzz)

        fizzBuzz dependsOn(kata)

}

但运行主项目(scala kata)的测试无法为fizzBuzz构建测试。我遗漏了什么?

你的问题类似于。简而言之,
fizzBuzz.dependsOn(kata)
意味着它的编译配置取决于kata的编译配置,但您希望链接测试配置

sbt文档的部分向您展示了如何创建
test->test
依赖关系


但是,如果您不打算使用
kata
的测试源,而只是想在
fizzBuzz
中包含Scala测试,那么只需将它显式地添加到
fizzBuzz
的库依赖项中即可。可以定义辅助值

lazy val scalaTest = "org.scalatest" %% "scalatest" % "2.1.0" % "test"

然后,您可以将其添加为子项目的库依赖项(
libraryDependencies+=scalaTest
)。

是的,在子项目中我不需要kata的测试源。我只想共享库依赖项(仅在kata项目中声明,子项目依赖于它)。因此,据我所知,这是不可能的,我必须将它显式地添加到所有子项目中,或者在kata/src/test中声明子项目的所有测试。我说得对吗?