关于 scala:Factoring libraryDependencies in multi project Build.sbt

Factoring libraryDependencies in multi project Build.sbt

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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 构建测试。我错过了什么?


你的问题和这个类似。简而言之,fizzBuzz.dependsOn(kata)表示它的编译配置依赖于kata的编译配置,但是你要链接测试配置。

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

但是,如果您不打算使用 kata 的测试源,而只是想在 fizzBuzz 中包含 Scala-Test,也只需将其显式添加到 fizzBuzz 的库依赖项中.你可以定义一个辅助值

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

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