2013-10-10 3 views

Antwort

13

die Standardsyntax verwenden, aber die Ergebnisse der Aufgaben ignorieren verwendet:

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

Wegen eines bug in scalac Sie Dummy-Namen verwenden, sonst könnten Sie einfach val _ = ... verwenden.

Auch ziehe ich die explizite Weise oben, aber es ist auf diese kürzere Version gleichwertig, weil die Ergebnisse nicht verwendet werden:

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

Sind diese Tasks (stringTask und sampleTask) gemäß dieser Definition garantiert hintereinander ausgeführt oder gibt es keine solche Garantie? – HRJ

+3

@ mark-harrah Wie definiert man eine bestehende Kernaufgabe neu? Z.B. Ich möchte eine Abhängigkeit von der Kompilieraufgabe hinzufügen, um einige Anwendungsordner zu erstellen, damit diese verfügbar sind, wenn die Anwendung gestartet wird. Die Ordnererstellung in einer neuen Aufgabe ist ziemlich einfach, aber der Versuch, die Kompilieraufgabe neu zu definieren, verursacht einen zyklischen Referenzfehler. Irgendeine Idee, wie man das löst? –

+2

@HRJ Sbt wird immer versuchen, alles parallel zu machen. Es gibt eine neue Funktion in 0.13.8, mit der Sie sequentielle Aufgaben definieren können. Siehe http://www.scala-sbt.org/0.13/docs/sbt-0.13-Tech-Previews.html#Sequential+tasks –

4

Genau wie Sie in 0.12 tat

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) 

Wie < < = veraltet sehen nun die obige Antwort.

+0

Interessant. Es gibt also kein Äquivalent mit dem Operator = = wie bei den meisten anderen Operationen? –

+0

Ich konnte keinen anderen Weg finden (in der Dokumentation und api). – Jan

+2

'<< =' ist jetzt veraltet. –

8

Die offiziellen migration guide empfiehlt, statt:

a <<= a dependsOn b 

definieren als:

a := (a dependsOn b).value 
Verwandte Themen