3

我正在尝试编写一个简洁的多项目Build.sbt,所以我尝试将所有库依赖项放在根项目中,然后让其他人依赖它。我的 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)运行测试无法为 fizzBu​​zz 构建测试。我错过了什么?

4

1 回答 1

3

您的问题与类似。简而言之,fizzBuzz.dependsOn(kata)就是说它的编译配置依赖于kata的编译配置,但是你要链接测试配置。

sbt 文档的“每配置类路径依赖项”部分向您展示了如何创建test->test依赖项。


但是,如果您不打算使用kata的测试源,而只是在寻找一种将 Scala-Test 包含在 中的方法fizzBuzz,那么只需将其显式添加到fizzBuzz的库依赖项中即可。您可以定义一个辅助值

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

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

于 2014-04-06T22:22:40.690 回答