[FIXED] Führen Sie die sbt-Aufgabe mit geänderter Abhängigkeit aus

Ausgabe

Ich möchte eine benutzerdefinierte runLocalAufgabe erstellen, die die sbt- runAufgabe mit geänderter unmanagedClasspath.

Ich möchte, dass die
unmanagedClasspathÄnderung nur während der Ausführung sichtbar/dauerhaft runLocalist, nicht run.

Was ich ausprobiert habe
build.sbt:

Runtime / unmanagedClasspath ++= Seq(new java.io.File("src/main/my_resources")).classpath
val runLocal = taskKey[Unit]("Run app with my config")
runLocal := {
  (Runtime / run).toTask("").value
}

Das obige funktioniert, aber das Problem ist, dass die Änderung von unmanagedClasspath“global” ist und sich auf jede Aufgabe auswirkt, die diesen Wert verwendet.

Wie kann ich
runLocalmit geänderten ausführen unmanagedClasspath, die außerhalb dieser Aufgabe nicht sichtbar sind?

Lösung

Was ich am Ende getan habe, ist die Verwendung einer Command.

Befehle haben Zugriff auf den Status und können ihn ändern.

val runLocal = Command.command("runLocal") { state =>
  val extracted = Project.extract(state)
  val localConfigClasspath = Seq(new java.io.File("src/main/my_resources")).classpath
  val newState = extracted.appendWithoutSession(Seq(Runtime / unmanagedClasspath ++= localConfigClasspath), state)
  Project.extract(newState).runInputTask(Runtime / run, "", newState)._1
}

Auf diese Weise wird die Konfiguration nur während der Ausführung geändert, sbt runLocalohne dass sbt run.


Beantwortet von –
jcz


Antwort geprüft von –
Senaida (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like