我有一个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)
)
现在我在test-folder的'core'项目中有一些测试代码。还有模拟和测试实用程序之类的东西。现在我想在扩展的测试中使用这些测试实用程序。对于生产代码,这是有效的,因为我已经声明了依赖。然而,似乎依赖性不适用于测试。当我运行测试时,我得到了缺少类的编译错误。这些类来自核心项目中的测试代码。
如何告诉sbt依赖项还应该包含测试范围的测试代码?这样我就可以在'exension'项目的测试代码中重用我的模拟了吗?
答案 0 :(得分:78)
像这样:
dependencies = Seq(coreProject % "compile->compile;test->test")
在Getting-Started-Multi-Project指南中的“按配置类路径依赖关系”一节中对此进行了讨论。
答案 1 :(得分:31)
您也可以在初始项目声明后使用.dependsOn(coreProject % "compile->compile;test->test")
执行此操作。
lazy val coreProject = Project("core-project")
lazy val extensions = Project("extensions").dependsOn(coreProject % "compile->compile;test->test")