多项目中的 SBT 测试依赖: 使测试代码对依赖项目可用

我有一个 SBT 多项目,其中一些项目相互依赖。像这样:

 lazy val coreProject: Project = Project(
id = "core-project",
base = file("./core-project"),
// other stuff
))


lazy val extensions: Project = Project(
id = "extensions",
base = file("./extensions"),
dependencies = Seq(coreProject)
)

现在我在测试文件夹的“核心”项目中有一些测试代码。还有像模拟和测试实用程序这样的东西。现在我想在扩展的测试中使用这些测试工具。对于生产代码,这是可行的,因为我已经声明了一个依赖项。然而,依赖性似乎并不适用于测试。当我运行测试时,我得到缺少类的编译错误。这些类来自 core-project 中的测试代码。

我如何告诉 sbt,依赖项还应该包括测试范围的测试代码?这样我就可以在“扩展”项目的测试代码中重用我的模拟了?

19269 次浏览

Like so:

dependencies = Seq(coreProject % "compile->compile;test->test")

This is discussed in the section "Per-configuration classpath dependencies" in then Getting-Started-Multi-Project guide.

You can also do this with a .dependsOn(coreProject % "compile->compile;test->test") after the initial project declaration.

lazy val coreProject = Project("core-project")
lazy val extensions = Project("extensions").dependsOn(coreProject % "compile->compile;test->test")