2013-10-10 27 views

回答

13

使用標準的語法,但忽略了使用的任務的結果:

unitTask := { 
    val x = stringTask.value 
    val y = sampleTask.value 
() 
} 

因爲bug in scalac的,你必須使用假名字,否則你可以只使用val _ = ...

另外,我喜歡上面的更明確的方式,但因爲結果不使用就相當於這個較短的版本:

unitTask := { 
    stringTask.value 
    sampleTask.value 
} 
+0

按照這個定義,這些任務(stringTask和sampleTask)是否保證按順序運行,還是沒有這種保證? – HRJ

+3

@ mark-harrah如何重新定義現有的核心任務?例如。我想添加對編譯任務的依賴關係來創建一些應用程序文件夾,以便在應用程序啓動時可用。在新任務中創建文件夾相當簡單,但試圖重新定義編譯任務會導致循環引用錯誤。任何想法如何解決這個問題? –

+2

@HRJ Sbt將一直試着平行完成所有事情。 0.13.8中有一項新功能,可以讓您定義順序任務。請參閱http://www.scala-sbt.org/0.13/docs/sbt-0.13-Tech-Previews.html#Sequential+tasks –

4

就像在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) 

照< < =現在已經過時,看到上面的答案。

+0

有趣。所以沒有與其他操作一樣的使用:=運算符的等價物? –

+0

我找不到任何其他方式(在文檔和API中)。 – Jan

+2

'<< ='現在已被棄用。 –

8

官方migration guide建議,而不是:

a <<= a dependsOn b 

將其定義爲:

a := (a dependsOn b).value 
相關問題