播放时重新编译所有文件?

时间:2013-07-11 10:09:20

标签: java playframework

我开始使用Play框架, 我已经尝试了一些例子,我想知道它是如何对页面刷新起作用的:它是重新编译所有文件还是仅重新编译的文件?

3 个答案:

答案 0 :(得分:2)

您可以阅读这篇文章,其中解释了Play热重播的工作原理:http://jto.github.io/articles/play_anatomy_part2_sbt/

基本上,在文件更改时SBT(Play中使用的构建工具)会识别要在您的实例中重新编译和重新插入新代码的内容。

请注意,它仅适用于无状态环境,因为它不会丢弃或重新启动旧对象。在无国界的世界中,每个请求都会创建它需要的所有对象,并且不会从外部保留任何内容。如果您使用带有Play的websockets,您可能会遇到一些奇怪的行为,因为websockets是有状态的(您必须打开一个新的套接字才能获得更改)。

答案 1 :(得分:2)

它只会在您修改后重新编译相关文件。以下是Play官方网站的说法:

以开发模式运行服务器

In this mode, the server will be launched with the auto-reload feature enabled, 
meaning that for each request Play will check your project and recompile required sources. 
If needed the application will restart automatically.

作为旁注,Play使用JNotify来监控文件系统中的更改。

以下是JNotify的链接:http://jnotify.sourceforge.net/

答案 2 :(得分:1)

Play仅在您第一次打开浏览器时编译整个项目。这意味着第一次在浏览器中运行它可能会加载一点点。我不确定播放是如何识别从上次编译中修改过的文件,但是为了回答你的问题,它只会编译修改后的文件。