2013-10-10 14 views

Odpowiedz

13

Użyj standardowej składni, ale ignorować wyniki zadań używanych:

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

Z powodu bug in scalac, trzeba użyć nazwy obojętne, w przeciwnym razie można po prostu użyć val _ = ....

Również wolę bardziej wyraźny sposób powyżej, ale jest to równoznaczne z tym krótszy wersji, ponieważ wyniki nie są używane:

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

Zgodnie z tą definicją, czy te zadania (stringTask i sampleTask) gwarantują uruchamianie w sekwencji, czy też nie ma takiej gwarancji? – HRJ

+3

@ mark-harrah Jak przedefiniować istniejące podstawowe zadanie? Na przykład. Chciałbym dodać zależność od zadania kompilacji, aby utworzyć kilka folderów aplikacji, aby były one dostępne po uruchomieniu aplikacji. Tworzenie folderu w nowym zadaniu jest dość proste, ale próba ponownego zdefiniowania zadania kompilacji powoduje cykliczny błąd odniesienia. Każdy pomysł, jak to rozwiązać? –

+2

@HRJ Sbt zawsze będzie starał się robić wszystko równolegle. W wersji 0.13.8 wprowadzono nową funkcję, która umożliwia definiowanie zadań sekwencyjnych. Zobacz http://www.scala-sbt.org/0.13/docs/sbt-0.13-Tech-Previews.html#Sequential+adasks –

4

tak jak robiłeś w 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) 

Jak < < = jest teraz przestarzała patrz odpowiedź wyżej.

+0

Interesujące. Więc nie ma odpowiednika za pomocą operatora: =, ponieważ są one dostępne dla większości innych operacji? –

+0

Nie mogłem znaleźć żadnego innego sposobu (w dokumentacji i api). – Jan

+2

'<< =' jest teraz przestarzałe. –

8

Oficjalna migration guide zaleca zamiast:

a <<= a dependsOn b 

zdefiniować jako:

a := (a dependsOn b).value 
Powiązane problemy