如何在0.13中声明任务对任务的依赖?

Ale*_*son 11 scala sbt

在sbt 0.12中,您可以指定一个任务依赖于另一个任务而不实际使用输入任务的输出.所以你纯粹指定了任务的顺序:

unitTask <<= Seq(stringTask, sampleTask).dependOn
Run Code Online (Sandbox Code Playgroud)

sbt 0.13的Tasks文档中没有这样的示例.指定所述依赖项的新语法是什么?

Mar*_*rah 13

使用标准语法,但忽略所使用任务的结果:

unitTask := {
  val x = stringTask.value
  val y = sampleTask.value
  ()
}
Run Code Online (Sandbox Code Playgroud)

由于scalac中的错误,您必须使用虚拟名称,否则您可以使用val _ = ....

此外,我更喜欢上面更明确的方式,但它相当于这个较短的版本,因为没有使用结果:

unitTask := {
  stringTask.value
  sampleTask.value
}
Run Code Online (Sandbox Code Playgroud)

  • @mark-harrah如何重新定义现有的核心任务?例如,我想在编译任务上添加依赖项来创建一些应用程序文件夹,以便在启动应用程序时可以使用这些文件夹.新任务中的文件夹创建相当简单,但尝试重新定义编译任务会导致循环引用错误.不知道怎么解决这个问题? (3认同)
  • @HRJ Sbt将始终尝试并行完成所有事情.0.13.8中有一个新功能,允许您定义顺序任务.见http://www.scala-sbt.org/0.13/docs/sbt-0.13-Tech-Previews.html#Sequential+tasks (2认同)

Tod*_*wen 9

官方迁移指南建议不要:

a <<= a dependsOn b
Run Code Online (Sandbox Code Playgroud)

将其定义为:

a := (a dependsOn b).value
Run Code Online (Sandbox Code Playgroud)