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


83

我有一个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)
  )

现在,我在测试文件夹的“核心”项目中有了一些测试代码。还有诸如模拟和测试实用程序之类的东西。现在,我想在扩展的测试中使用这些测试实用程序。对于生产代码,这是可行的,因为我已经声明了依赖项。但是,似乎对测试不依赖。当我运行测试时,我收到缺少类的编译错误。这些类来自核心项目中的测试代码。

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

Answers:


91

像这样:

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

在《入门-多项目》指南的“按配置的类路径依赖关系”部分中对此进行了讨论。


1
只是为了避免其他人混淆,这建议您在Project定义中设置依赖项(而不是库依赖项)。
瑞安·格罗斯

对于非SBT的ninzas,您可以显示更多构建文件吗?像lazy val foo = project.settings(...).dependencies(Seq(bar % "compile->compile;test->test"))这样的定义不起作用。@RyanGross,可以吗?
Abhijit Sarkar,

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.