scala – 如何在SBT中使用ForkOptions来更改子项目中的测试工作
我目前有一个多项目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为该子项目中的测试进行派生,并将工作目录更改为该子项目的基础. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |