如何设置sbt以在代码更改时重新启动长时间运行的服务器进程?

时间:2010-06-28 09:06:19

标签: sbt

使用~run命令sbt会在源文件发生变化时为我重新运行可执行目标。这很好,但如果目标是一个长时间运行的服务器进程,sbt将暂停,直到子进程终止,因此源更改不起作用。

即使目标代码正在运行,我也希望有sbt监视器并重新编译我的源代码,并在成功构建时重新启动该进程。有人试过这个吗?

3 个答案:

答案 0 :(得分:8)

(对不起,验尸回复)

https://github.com/spray/sbt-revolver只是为了解决这个问题而创建的。

答案 1 :(得分:5)

这是通过内置的“〜”功能无法实现的。问题是,“〜”前缀任务必须完成。如果它是侦听某些端口的服务器应用程序,则必须先将其停止。

也许您可以创建自己的任务或修改run任务,以终止/退出正在运行的应用程序(例如,在侦听端口上发送魔术退出字符串?)。有关更多信息,请参阅此处:

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

答案 2 :(得分:1)

如果您正在追求的话,JRebel可以帮助您进行动态类重新加载。 免费Scala许可证可用hereSBT site上的使用信息。