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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多项目中的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)
  )

现在我在test-folder的'core'项目中有一些测试代码。还有模拟和测试实用程序之类的东西。现在我想在扩展的测试中使用这些测试实用程序。对于生产代码,这是有效的,因为我已经声明了依赖。然而,似乎依赖性不适用于测试。当我运行测试时,我得到了缺少类的编译错误。这些类来自核心项目中的测试代码。

如何告诉sbt依赖项还应该包含测试范围的测试代码?这样我可以在'exension'项目的测试代码中重用我的模拟?

答案

像这样:

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

这在Getting-Started-Multi-Project指南中的“按配置类路径依赖性”一节中讨论。

另一答案

您也可以在初始项目声明后使用.dependsOn(coreProject % "compile->compile;test->test")执行此操作。

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

以上是关于多项目中的SBT测试依赖性:使测试代码可用于相关项目的主要内容,如果未能解决你的问题,请参考以下文章

如何通过将 sbt-plugin 用作多项目构建中的依赖项来访问它的子项目?

SBT/Play2 多项目设置在运行/测试的类路径中不包括依赖项目

创建包含 SBT 项目+子项目中所有测试的程序集 jar

多模块项目中的 Maven 测试依赖项

sbt-assembly 多模块项目?

使 SBT 子项目任务依赖于另一个子项目任务