搭建方便的Lift开发环境
本文将介绍在windows中如何使用Intellij Idea 9.02 + Scala Maven plugin + jetty + JRebel打造一个便捷的Lift开发环境。
首先安装Intellij idea 的开源社区版本,目前的最新版本是9.02. 开源版本自带有功能强大的maven插件,这对于开发使用maven创建和管理的Lift工程特别方便。关于如何在Intellij上安装scala插件,请参考我的博文:Scala学习笔记_1 搭建开发环境(Intellij IDEA + scala插件)。
接下来下载并安装Maven,并把maven的bin目录加入“Path”环境变量中,以便可以在命令行中直接调用。
使用Maven创建一个Lift工程。打开cmd,并转到某个目录下,运行maven的archetype:generate命令。
注:以下命令不换行



保存并且编译这个文件[Ctrl + Shift + F9],刷新页面,就可以马上看到更改,无需重新装载应用或者重启服务器。同时可以看到控制台的输出:
JRebel: Reloading class 'demo.helloworld.snippet.HelloWorld'.
JRebel: Reloading class 'demo.helloworld.snippet.HelloWorld$$anonfun$howdy$1'.
至此,我们搭建了一个完美的Lift开发环境,接下来要做的就是好好享受Lift的优雅带来的编码乐趣了。
讨论和比较:
事实上不需要JRebel也可以实现热部署,在pom.xml中,把scanIntervalSeconds设置为非0的数值,jetty就会每间隔设定时间扫描一次类以及pom.xml的变化,如果监测到有改变,则重新打包并部署。下面是使用jetty自导的热部署时的一个输出:
[INFO] Starting scanner at interval of 5 seconds.
......
INFO - Service request (GET) / took 78 Milliseconds
[INFO] restarting org.mortbay.jetty.plugin.Jetty6PluginWebAppContext@94b318{/,E:\liftprojects\helloworld\src\main\webapp}
[INFO] Webapp source directory = E:\liftprojects\helloworld\src\main\webapp
[INFO] Reload Mechanic: automatic
[INFO] Classes = E:\liftprojects\helloworld\target\classes
[INFO] Context path = /
[INFO] Tmp directory = determined at runtime
[INFO] Web defaults = org/mortbay/jetty/webapp/webdefault.xml
[INFO] Web overrides = none
[INFO] web.xml file = E:\liftprojects\helloworld\src\main\webapp\WEB-INF\web.xml
[INFO] Webapp directory = E:\liftprojects\helloworld\src\main\webapp
2010-06-25 22:37:32.531:INFO::No Transaction manager found - if your webapp requires one, please configure one.
[INFO] Restart completed at Fri Jun 25 22:37:35 CST 2010
可以看到类改变时,整个helloworld应用被重新加载。如果应用很大,重启的时间是很客观的,而且有可能导致内存泄露。而使用JRebel,则只需要重新加载改变过的类,无需加载应用,所以极力推荐使用JRebel.
参考资料:Lift wiki教程:http://www.assembla.com/wiki/show/liftweb/Using_Maven
1 楼 jamesqiu 2010-09-07 IDEA编译Scala太慢,基本不可用;我觉得sbt或者eclipse都更快,可以试试。