Aufgabe zu Build.scala hinzufügen

8

Das Dokument Ссылка erläutert, wie Sie eine zu erstellende Aufgabe hinzufügen .sbt, aber wie fügen Sie einen zu build.scala hinzu? Danke

    
Ben 09.12.2013, 22:46
quelle

2 Antworten

10

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%     
Seth Tisue 10.12.2013, 04:26
quelle
2

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 .

    
trepidacious 24.12.2014 23:13
quelle

Tags und Links