在多项目Build.sbt中保存库依赖项

时间:2014-04-05 09:14:34

标签: scala dependencies sbt multi-project

我试图编写一个简洁的多项目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构建测试。我错过了什么?

1 个答案:

答案 0 :(得分:3)

您的问题与this one类似。简而言之,fizzBuzz.dependsOn(kata)表示其编译配置取决于kata的编译配置,但您希望链接 test 配置。

sbt文档的'Per-configuration classpath dependencies'部分向您展示了如何制作test->test依赖项。


但是,如果您不打算使用kata的测试源但只想找到在fizzBuzz中包含Scala-Test的方法,只需将其明确添加到fizzBuzz即可也是库的依赖关系。您可以定义辅助值

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

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