如何在'test'之前运行"package"

dip*_*ips 7 scala sbt

我有一个scala编译器项目.一些测试用例依赖于生成的jar文件.因此,我总是在运行"测试"任务之前手动运行"包"任务.

如何添加一个SBT任务,它将完成"测试"的工作,但将取决于"包"?

Chr*_*ian 7

sbt 0.12:

将以下内容添加到项目设置中:

(test in Test) <<= (test in Test) dependsOn (Keys.`package` in Compile)
Run Code Online (Sandbox Code Playgroud)

这会更改项目的测试任务.但您也可以定义自己的任务:

val myTestTask = TaskKey[Unit]("my-test-task", "runs package and then test")
Run Code Online (Sandbox Code Playgroud)

然后将其添加到您的项目设置:

myTestTask <<= (test in Test) dependsOn (Keys.`package` in Compile)
Run Code Online (Sandbox Code Playgroud)

sbt 0.13:

将以下内容添加到项目设置中:

(test in Test) := {
  (Keys.`package` in Compile).value
  (test in Test).value
}
Run Code Online (Sandbox Code Playgroud)

这会更改项目的测试任务.但您也可以定义自己的任务:

val myTestTask = taskKey[Unit]("runs package and then test")
Run Code Online (Sandbox Code Playgroud)

然后将其添加到您的项目设置:

myTestTask := {
  (Keys.`package` in Compile).value
  (test in Test).value
}
Run Code Online (Sandbox Code Playgroud)

  • @dips这是与Scala的`package`关键字的不幸冲突. (2认同)