【问题标题】:How to use ForkOptions in SBT to change working directory for test within subproject?如何在 SBT 中使用 ForkOptions 更改子项目中测试的工作目录?
【发布时间】:2015-07-31 02:55:07
【问题描述】:

我目前有一个多项目 SBT 构建,其中有 2 个项目,其中一个依赖于另一个。依赖项有一个测试,它需要从其工作目录下的某个目录结构中加载文件。它使用配置文件中的相对路径来指定此目录结构。

问题在于,取决于我是通过我的 IDE(在子项目级别使用工作目录)还是在 SBT 总括项目级别(在总括级别使用工作目录)运行此测试,这会影响我的测试通过其相对路径加载此文件并成功。

我需要使用相对路径,以便从事此项目的其他开发人员可以使用开箱即用的签入代码,并且在项目中复制目录结构和包含的文件的两个级别是不可能的。我真正需要做的是在做测试时直接SBT将工作目录移动到子项目中,这样无论从哪里开始测试,目录结构都可以保持不变。

SBT 提供了一个 ForkOptions 类 (http://www.scala-sbt.org/0.13.0/api/index.html#sbt.ForkOptions),在此处进一步描述:页面底部的http://www.scala-sbt.org/0.13/docs/Forking.html,似乎可以通过它为分叉的 JVM 提供一个工作目录,但没有提供任何好处有关如何在根 build.sbt 中设置配置或为测试任务提供 ForkOptions 实例的示例。

有没有人有使用这个类的经验,和/或任何人都可以提供一些关于从 SBT 中的多项目构建中获取此功能的指导吗?

【问题讨论】:

标签: scala sbt


【解决方案1】:

解决方案是在根 build.sbt 中为项目定义提供以下设置。

lazy val yourProject = project.settings(
    fork := true,
    baseDirectory in test := file("yourProject")
)

这些会导致 JVM 为该子项目中的测试分叉,并将工作目录更改为该子项目的基础。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 2016-06-03
    • 2012-11-17
    • 1970-01-01
    相关资源
    最近更新 更多