2014-02-09 16 views
7

Wie kann ich den Wert einer Einstellung erhalten (etwa name) und es als Argument an fullRunTask passieren? Ich verstehe die Implementierung von fullRunTask nicht.Pass sbt Einstellungen als Argumente in fullRunTask

Zum Beispiel:

lazy val foo = TaskKey[Unit]("foo")

fullRunTask(foo, Compile, "foo.Foo", name.value)

funktioniert nicht, weil ich nicht name.value in diesem Zusammenhang verweisen kann.

+0

Was möchten Sie erreichen? Ich verstehe die Frage nicht. Können Sie einen Code anzeigen, den Sie ausführen möchten, aber mit Ihrem Wissen über SBT nicht möglich? –

+0

@JacekLaskowski sehen bearbeiten oben – tpolecat

+0

Was brauchen Sie 'fullRunTask' für? –

Antwort

12

Ok habe ich etwas Hilfe von Josh Suereth. Dadurch mit fullRunTask ist ein wenig komplizierter, aber das Extramaterial es funktioniert (Hinzufügen runner in myTask) ist nicht wirklich notwendig. Inlining den Körper von runTask tat, was ich brauchte.

lazy val myTask = taskKey[Unit]("my custom run task") 

myTask := { 
    val r = (runner in Compile).value 
    val input = name.value // or any other string setting(s) 
    val cp = (fullClasspath in Compile).value 
    toError(r.run("my.MainClass", data(cp), Seq(input), streams.value.log)) 
} 
+0

Es ist großartig zu wissen, dass die einzige Möglichkeit, dies zu erreichen, eine benutzerdefinierte Aufgabe ist, die den Zugriff auf Werte mit "Wert" ermöglicht. Ich sollte es mit diesem Vorschlag beantwortet haben, aber bemerkte, dass ich zu spät gekommen wäre :) –

+2

Außerdem müssen Sie den "import sbt.Attributed.data" Import hinzufügen, um "Daten" in den Geltungsbereich zu bringen. –

Verwandte Themen