【问题标题】:How to set up sbt to restart long-running server process upon code change?如何设置 sbt 以在代码更改时重新启动长时间运行的服务器进程?
【发布时间】:2011-03-09 01:15:34
【问题描述】:

每当源文件更改时,使用~run 命令 sbt 将为我重新运行可执行目标。这很好,但是如果目标是一个长时间运行的服务器进程,sbt 会被挂起,直到子进程终止,所以源更改无效。

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

【问题讨论】:

    标签: sbt


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢。我打算再把它打开几天,但这可能会作为自定义操作完成,如果有的话。
    【解决方案2】:

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

    【讨论】:

    • 在大多数情况下,即时重新加载甚至可能是更快的解决方案,尽管可能不那么可靠。由于 JRebel 是专有许可证,我将首先使用自定义操作路线。谢谢!
    【解决方案3】:

    (对不起,事后回复)

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

    【讨论】:

    • 这真的应该是认可的答案!
    猜你喜欢
    • 2012-09-28
    • 2019-05-07
    • 2011-05-18
    • 2021-02-26
    • 2023-04-08
    • 2019-12-31
    • 2015-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多