2016-06-22 35 views
1

Ich möchte eine benutzerdefinierte Aufgabe in meinem Projekt build.sbt Datei definieren. Die Task assembly aus dem Plugin sbt-assembly gibt den Dateinamen jedes assemblierten Jars zurück. Die benutzerdefinierte Task sollte warten, bis der Task assembly abgeschlossen ist, und die Liste der Dateinamen zum Ausführen eines Shell-Scripts verwenden.Wie sbt-Assembly vor benutzerdefinierten Task sequenzieren

Hier ist eine Idee von dem, was ich versuche,

lazy val listOfFiles = taskKey[Unit]("Run script passing jar file names as parameters.") 

listOfFiles := { 
    val files = List[File]() 
    files :+ assembly 
    // run script passing file names as parameters 
} 

ich versucht hat zu erreichen Def.sequential verwenden, aber ich glaube nicht, dass es für die Anforderungen meiner benutzerdefinierten Aufgabe geeignet ist. Jede Hilfe zum Erstellen einer benutzerdefinierten Aufgabe wie dieser wird sehr geschätzt!

Antwort

1

Nachdem ich Stunden damit verbracht habe, online zu recherchieren und online zu suchen, habe ich entdeckt, dass ich das Problem auf eine leicht falsche Art und Weise durchdachte.

Die Lösung, die ich mit kommen haben, ist die Aufgabe wie folgt zu definieren:

lazy val listOfFiles = taskKey[Unit]("Run script passing jar file names as parameters.") 

listOfFiles := { 
    val files = assembly.all(ScopeFilter(inProjects(project1, project2, project3))).value 
    files.map(x => println("jar file: " + x)) 
    // run script passing file names as parameters 
} 

Die listOfFiles oben Aufgabe, die Montageaufgabe im Rahmen der project1, project2, project3 und gibt eine Folge von Datei ausgeführt werden soll Namen. Genau das habe ich versucht zu erreichen. Hoffe, das hilft jemandem.