/ / SBT gelten Task nach Compile - Scala, Kompilierung, sbt, Task

SBT wendet die Aufgabe nach der Kompilierung an - scala, compilation, sbt, task

Ich kann eine Aufgabe vor dem Kompilieren automatisch ausführen mit:

compile in Compile <<= (compile in Compile).dependsOn(myTask)

Wie mache ich das aber auch nach kompilieren?

Ich weiß ich kann:

compile in Compile <<= (compile in Compile) map{x=>
// post-compile work
doFoo()
x
}

um beliebigen Scala-Code auszuführen, aber ich muss die Zielaufgabe selbst automatisch ausführen, wenn ein Compile-Ereignis auftritt

Etwas tun wie:

val foo = TaskKey[Unit]("foo", "...")
val fooTask = foo <<= scalaInstance map {si =>
...
} dependsOn(compile in Compile)

funktioniert, wenn ich "foo" über die Eingabeaufforderung sbt> eingebe; d.h. Die Task wird nach dem Kompilieren ausgeführt. Das Ziel besteht jedoch darin, die Kompilierungsaufgabe selbst einzuhaken. Wenn also eine Kompilierung erfolgt, wird die foo-Task nach Abschluss der Kompilierung automatisch aufgerufen.

Ist das möglich oder gehe ich falsch herum, um mich in die eingebaute Kompilieraufgabe einzuarbeiten?

Antworten:

13 für die Antwort № 1

Im Allgemeinen gibt es eine Aufgabe, die von Ihrer Aufgabe abhängt.

Ob compile wird verwendet, um "Kompilieren und Einrichten für Grunt" zu bedeuten, und dann ein erstellen prepareGrunt Aufgabe, die davon abhängt compile und myTask und führe das stattdessen aus.

Ob myTask sollte ausgeführt werden, bevor die Klassen und Ressourcen des Projekts von etwas anderem verwendet werden exportedProducts. Aufgaben wie run und test und Aufgaben in abhängigen Projekten erhalten die exportierten Klassenpfadeinträge von dieser Aufgabe.

Die Gefahr bei "Nach dem Kompilieren" ist das myTask wird nicht vor der eigentlichen Aufgabe ausgeführt. Es gibt die triggeredBy Methode an Initialize[Task[T]], aber es wird leicht missbraucht und sollte nur verwendet werden, wenn bekannt ist, dass die Ausgabe der Aufgabe erst nach Ausführung aller Aufgaben verwendet wird.