我试图编写一个简洁的多项目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)运行测试无法为fizzBuzz构建测试。我错过了什么?
答案 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
)。