使用Play框架在网络文件系统上自动重新加载

时间:2013-01-13 00:07:34

标签: playframework playframework-2.0 playframework-2.1

我在VirtualBox VM上运行Play框架应用程序,项目源代码位于从主机系统共享的目录中。框架的自动重新加载功能不起作用。

这可能是由于JNotify无法检测到源文件的更改而导致的,因为文件系统不是本地的。 NFS和vboxsf都遇到同样的问题。

有什么方法吗?

Play框架具有内置的回退机制,用于检测JNotify不可用的系统上的更改。有可能以某种方式强制选择后备机制吗? (性能打击是可以接受的。)

还有其他解决方案吗?

3 个答案:

答案 0 :(得分:3)

我遇到了同样的情况。在Play / SBT控制台中切换到~run(而不是run)绕过JNotify(根据Josh Suereth的说法)并且似乎为我解决了这个问题。

答案 1 :(得分:1)

回答我自己的问题:似乎没有一种直接的方法来实现这一点,并且看起来这种功能在不久的将来不会在网络文件系统中出现。

破解Play框架的sbt插件并使PlayReloader特性表现得好像JNotify不可用,这是相当微不足道的,但至少可以说这是一个肮脏的黑客。

最好的解决方案似乎是将Play应用程序从VM移开并在主机上运行,​​即使完全自动配置的开发环境的某些优点会丢失。

答案 2 :(得分:1)

根据James Roper的说法,如果您使用的是游戏2.3.2或更高版本,则可以将以下内容添加到build.sbt中:

PlayKeys.playWatchService := play.sbtplugin.run.PlayWatchService.sbt(pollInterval.value)

James Roper对此问题的完整回复是the link