【发布时间】:2016-12-29 17:02:30
【问题描述】:
我正在使用 play 框架并且遇到热交换问题(甚至是及时启动 sbt 服务器)
一些消息来源概述了这个问题与 play 的分叉运行有关,要解决这个问题,应该将其设置为 false。
但是 play fork run 有什么作用?关闭它有什么缺点?
顺便说一句,这里有一些参考资料:
【问题讨论】:
标签: playframework
我正在使用 play 框架并且遇到热交换问题(甚至是及时启动 sbt 服务器)
一些消息来源概述了这个问题与 play 的分叉运行有关,要解决这个问题,应该将其设置为 false。
但是 play fork run 有什么作用?关闭它有什么缺点?
顺便说一句,这里有一些参考资料:
【问题讨论】:
标签: playframework
Play fork run,是 sbt 的一个函数,其中 JVM 是 fork 的。分叉 JVM 意味着 JVM 作为单独的 JVM 运行,在 OS 中作为不同的进程运行。
如果 JVM 没有分叉,则某些 JVM 范围的设置(例如系统属性)可能会影响播放实例。 优点之一是当 fork 崩溃时,例如当您在多个 fork 中运行多个测试时,其他 fork 仍将继续运行。
在 play 的情况下,JVM 是分叉的,因此它不会在运行 sbt 的同一 JVM 进程中运行。请参阅以下内容(来自sbt documentation):
默认情况下,run 任务与 sbt 在同一个 JVM 中运行。但是,在某些情况下需要分叉。或者,您可能希望在实现新任务时分叉 Java 进程。
这很有用,因为如果你的 play 实例崩溃,例如当 system.exit 被调用或出现未终止的线程时,sbt 将继续运行。否则 sbt 也会崩溃。
参考资料:
What does it mean to have a forked java VM?
Getting Started with SBT for Scala
【讨论】: