2010-06-28 5 views
6

Mit dem Befehl ~run führt sbt bei jedem Wechsel einer Quelldatei ein ausführbares Ziel für mich erneut aus. Das ist nett, aber wenn das Ziel ein Serverprozess mit langer Laufzeit ist, wird sbt angehalten, bis das Kind beendet wird, so dass Quellenänderungen keine Auswirkungen haben.Wie richte ich sbt ein, um den Prozess für lang laufende Server nach Codeänderung neu zu starten?

Ich möchte sbt Monitor und neu kompilieren meine Quellen noch während der Zielcode ausgeführt wird, und starten Sie den Prozess bei einem erfolgreichen Build neu. Hat jemand versucht, das einzurichten?

Antwort

5

Dies ist über die eingebaute "~" Funktionalität nicht möglich. Das Problem ist, dass die "~" vordefinierte Aufgabe abgeschlossen sein muss. Wenn es eine Server-Anwendung ist, die auf einige Ports hört, müssen Sie sie zuerst stoppen.

Vielleicht könnten Sie Ihre eigene Aufgabe erstellen oder die Aufgabe run ändern, um die laufende Anwendung zu beenden (z. B. eine magische Exit-Zeichenfolge am Abhörport senden?). Sehen Sie diese für weitere Informationen:

http://code.google.com/p/simple-build-tool/wiki/CustomActions

+0

Danke. Ich werde das noch ein paar Tage offen lassen, aber das wird wahrscheinlich als benutzerdefinierte Aktion erledigt werden, wenn überhaupt. – Crosbie

1

JRebel könnten Sie mit dynamischen Klasse Neuladen helfen, wenn es das ist, was Sie nach. Kostenlose Scala Lizenz verfügbar here. Nutzungsinformationen unter SBT site.

+0

On-the-fly-Nachladen kann in den meisten Fällen sogar eine schnellere Lösung sein, obwohl vielleicht nicht so zuverlässig. Da es sich bei JRebel um eine proprietäre Lizenz handelt, werde ich zuerst die benutzerdefinierte Aktionsroute nutzen. Vielen Dank! – Crosbie

Verwandte Themen