Der Teil, in dem Sie TaskKey
deklarieren, ist in beiden Formaten gleich: val myTask = taskKey...
.
Der Teil, wo Sie Ihre Initialize[Task[T]]
schreiben, ist gleich: myTask := ...
.
Der einzige Unterschied ist der Kontext, in dem die letzte Sache erscheint.
Im .sbt
-Format erscheint es von anderen Dingen getrennt durch Leerzeilen.
Im Format .scala
müssen Sie die Einstellung zum Projekt hinzufügen. Das ist dokumentiert bei Ссылка und ist egal, ob wir es sind über eine Aufgabe oder eine normale Einstellung sprechen.
Hier ist ein vollständiges Arbeitsbeispiel:
%Vor%Bei der Definition einer Aufgabe in einem Projekt eines Multiprojekt-Builds und der Verwendung eines "root" -Projekts zum Aggregieren anderer Projekte bedeutet die Aggregation, dass alle Aufgaben in Teilprojekten auch vom Stammprojekt aus ausgeführt werden können die Aufgaben in allen Teilprojekten - siehe Multi-Projekt-Builds . Dies ist in der Regel sinnvoll, um beispielsweise alle Teilprojekte zu kompilieren, wenn die Kompilieraufgabe vom Stammprojekt ausgeführt wird. In diesem Fall ist es jedoch etwas verwirrend.
Die Aufgabe ist also nicht in allen Projekten verfügbar, sondern sowohl im Teilprojekt, in dem Sie die Aufgabe definieren, als auch im aggregierenden (Stamm-) Projekt. Die Aufgabe läuft noch in dem Projekt, in dem sie definiert ist. Sie kann nur im Stammprojekt aufgerufen werden.
Um dies zu demonstrieren, können wir die gleiche "Hello" -Aufgabe in mehreren Unterprojekten definieren, die in einem Root-Projekt aggregiert sind:
%Vor%Beachten Sie, dass die Projekte a und b "Hallo" -Tasks haben und c nicht. Wenn wir "Hallo" aus dem Stammprojekt verwenden, bewirkt die Aggregation, dass die Aufgabe in Projekten a UND b ausgeführt wird:
%Vor%Wir können auch zu Projekt a oder b wechseln, und das Ausführen von hallo wird nur die Aufgabe in dem Projekt ausführen, in dem wir uns befinden:
%Vor%Schließlich, wenn wir zu Projekt c wechseln, ist Hallo nicht definiert:
%Vor%Diese Aggregation kann deaktiviert werden, wie beschrieben hier .
Tags und Links sbt