确保“重新启动"任务在它之前自动运行:测试 [英] Ensure 're-start' task automatically runs before it:test

查看:34
本文介绍了确保“重新启动"任务在它之前自动运行:测试的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我运行 IntegrationTest 目标 (it:test) 之前,是否可以让 re-start(又名 reStart)任务自动运行?

Is it possible to get the re-start (aka reStart) task to automatically run before I run the IntegrationTest target (it:test)?

我认为这样做可以:

test <<= (test in IntegrationTest) dependsOn reStart

但是,我收到此错误:

build.sbt:54: error: not found: value reStart
test <<= (test in IntegrationTest) dependsOn reStart
                                             ^
[error] Type error in expression

通过添加 import Revolver._ 我得到了一些进一步,但它仍然失败.但是,现在我得到了一个更具描述性的错误:

By adding import Revolver._ I got a bit further, but it still fails. Now I get a more descriptive error, however:

build.sbt:55: error: type mismatch;
 found   : sbt.InputKey[spray.revolver.AppProcess]
 required: sbt.Scoped.AnyInitTask
    (which expands to)  sbt.Def.Initialize[sbt.Task[T]] forSome { type T }
test in IntegrationTest <<= (test in IntegrationTest) dependsOn reStart

有没有办法解决这个问题?

Is there a way to get around that?

推荐答案

你可以像这样定义特殊的 TaskKey 类型的任务 (工作示例):

You can define special TaskKey-typed task for that like this (working example):

lazy val reStart0 = TaskKey[AppProcess]("re-start-0")
lazy val emptyArgs = SettingKey[revolver.Actions.ExtraCmdLineOptions]("empty-args")

lazy val projectA = Project(
  id = "hello-a",
  base = file("./a"),
  settings = Project.defaultSettings ++ Revolver.settings
).settings(
  emptyArgs := revolver.Actions.ExtraCmdLineOptions(Nil, Nil),
  reStart0 <<= {
  (streams, Revolver.reLogTag, thisProjectRef, Revolver.reForkOptions, mainClass in Revolver.reStart, fullClasspath in Runtime, Revolver.reStartArgs, emptyArgs)
     .map(revolver.Actions.restartApp)
     .dependsOn(products in Compile)
  }
)

lazy val projectB = Project(
  id = "hello-b",
  base = file("./b"),
  settings = Project.defaultSettings ++ Revolver.settings ++ Defaults.itSettings)
.configs(IntegrationTest)
.settings(
  test in (IntegrationTest) <<= (test in IntegrationTest).dependsOn(reStart0 in projectA)
)

这篇关于确保“重新启动"任务在它之前自动运行:测试的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆