如何在Scala/Lift/SBT .11中实现文件自动重新加载?

22

在SBT .7中,你可以这样做:

~jetty-run

为了使你的文件自动编译并在发生更改时重新加载Web应用程序。在SBT .11中,你可以这样做

~container:start

这个工具可以重新编译文件,但每次更改后似乎不会重新加载Web应用程序,我必须执行

container:stop
container:start

想要查看更改。问题在于需要约 ~30s 来重新启动。有没有更好的方法?通过 Google 和 SBT 的搜索都没有找到答案。

编辑:

container:start
container:reload

每当有变化发生时,似乎都能够正常工作。但是,是否有可能使其自动按照那个顺序发生呢?类似于:

~(container:start, container:reload)

它不起作用,但我希望它能。


看看这个问题是否相似:https://dev59.com/CF7Va4cB1Zd3GeqPHTGl - fmpwizard
3个回答

44

所以结论是~可以接受命令列表,正如fmpwizard提供的链接所提到的一样。因此你可以这样做:

~;container:start; container:reload /

这个方法是正确的:每当我保存文件时,它会重新编译必要的文件并重新加载Web应用程序!

编辑:应该是container:reload,如上所述。谢谢!


+1,我相信你的意思是“~;container:start; container:reload /”,但是使用“container reload”会出现错误。在Scala/SBT/Spray项目中,前者可以很好地解决问题... - virtualeyes
有没有办法在更改文件时保持用户登录状态?每次更改文件都需要重新登录真是太麻烦了。 - Fiona Hopkins
@phopkins 是的,您需要将扩展会话添加到您的应用程序中:https://www.assembla.com/spaces/liftweb/wiki/Extended_Sessions - Roch

1

~container:start 不是必需的,
您可以使用第一个没有 ~container:start,然后再使用 ~container:reload,这样在每次代码更改后就不需要重新启动 container:start.. 我想是这样的。


-1

你尝试过类似这样的东西吗:

container:start
~compile

尝试过了,每次都编译但是应用程序没有重新加载 =( - Li Haoyi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接