加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 如何在SBT中使用ForkOptions来更改子项目中的测试工作

发布时间:2020-12-16 19:23:08 所属栏目:安全 来源:网络整理
导读:我目前有一个多项目SBT构建,其下有2个项目,其中一个项目依赖于另一个项目.从属的测试需要从其工作目录下的某个目录结构加载文件.它使用配置文件中的相对路径来指定此目录结构. 问题在于,取决于我是通过我的IDE运行此测试(在子项目级别具有工作目录)还是在SBT
我目前有一个多项目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提供一个工作目录,但没有给出如何设置root build.sbt中的配置或将ForkOptions实例提供给测试任务.

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

解决方法

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

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

这些导致JVM为该子项目中的测试进行派生,并将工作目录更改为该子项目的基础.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读