In sbt 0.12, you could specify that one task depended upon another without actually using the output from the input tasks.所以你在任務純粹指定排序:如何在0.13中聲明任務依賴關係?
unitTask <<= Seq(stringTask, sampleTask).dependOn
沒有爲SBT 0.13任務文檔中沒有這樣的例子。指定所述依賴關係的新語法是什麼?
In sbt 0.12, you could specify that one task depended upon another without actually using the output from the input tasks.所以你在任務純粹指定排序:如何在0.13中聲明任務依賴關係?
unitTask <<= Seq(stringTask, sampleTask).dependOn
沒有爲SBT 0.13任務文檔中沒有這樣的例子。指定所述依賴關係的新語法是什麼?
使用標準的語法,但忽略了使用的任務的結果:
unitTask := {
val x = stringTask.value
val y = sampleTask.value
()
}
因爲bug in scalac的,你必須使用假名字,否則你可以只使用val _ = ...
。
另外,我喜歡上面的更明確的方式,但因爲結果不使用就相當於這個較短的版本:
unitTask := {
stringTask.value
sampleTask.value
}
就像在0.12
lazy val taskA= taskKey[Unit]("Prints 'Hello World'")
lazy val taskB= taskKey[Unit]("Prints 'Good by World'")
taskA := println("hello world!")
taskB := println("good by world!")
taskB <<= taskB.dependsOn(taskA)
照< < =現在已經過時,看到上面的答案。
按照這個定義,這些任務(stringTask和sampleTask)是否保證按順序運行,還是沒有這種保證? – HRJ
@ mark-harrah如何重新定義現有的核心任務?例如。我想添加對編譯任務的依賴關係來創建一些應用程序文件夾,以便在應用程序啓動時可用。在新任務中創建文件夾相當簡單,但試圖重新定義編譯任務會導致循環引用錯誤。任何想法如何解決這個問題? –
@HRJ Sbt將一直試着平行完成所有事情。 0.13.8中有一項新功能,可以讓您定義順序任務。請參閱http://www.scala-sbt.org/0.13/docs/sbt-0.13-Tech-Previews.html#Sequential+tasks –