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

如何设置sbt以在代码更改时重新启动长时间运行的服务器进程?,sbt,Sbt,使用~run命令,每当源文件发生更改时,sbt将为我重新运行可执行目标。这很好,但是如果目标是一个长时间运行的服务器进程,sbt将被挂起,直到子进程终止,因此源更改没有任何影响 我希望sbt能够在目标代码运行时监视并重新编译源代码,并在成功构建时重新启动流程。有人尝试过设置吗?通过内置的“~”功能,这是不可能的。问题是,带“~”前缀的任务必须完成。如果是服务器应用程序监听某些端口,则必须先停止它 也许您可以创建自己的任务或修改运行任务,以终止/退出正在运行的应用程序(例如,在侦听端口上发送魔术退

使用
~run
命令,每当源文件发生更改时,sbt将为我重新运行可执行目标。这很好,但是如果目标是一个长时间运行的服务器进程,sbt将被挂起,直到子进程终止,因此源更改没有任何影响


我希望sbt能够在目标代码运行时监视并重新编译源代码,并在成功构建时重新启动流程。有人尝试过设置吗?

通过内置的“~”功能,这是不可能的。问题是,带“~”前缀的任务必须完成。如果是服务器应用程序监听某些端口,则必须先停止它

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


JRebel可以帮助您重新加载动态类,如果这是您想要的。 可获得免费Scala许可证。网站上的使用信息

(很抱歉事后回复)


已创建,只是为了解决此问题。

谢谢。我打算再开放几天,但这可能会作为一个自定义操作完成,如果有的话。在大多数情况下,动态重新加载甚至可能是一个更快的解决方案,尽管可能没有那么可靠。由于JRebel是一个专有许可证,我将首先获取自定义操作路径。谢谢这真的应该是被认可的答案!