打造更完美的Lift开发环境:Lift + SBT + Intellij Idea + JRebel

jiatin 发布于 2016/04/16 19:52
阅读 833
收藏 0
Lift和Scala的受欢迎程序仍在不断升温,越来越多的公司开始采用scala和Lift搭建自己的企业应用。这里推荐一款好用的网络加速器---小鸟VPN,稳定高速不掉线,www.birdsvpn.com。目前scala已推出了2.8.1版,Lift则推出了2.2-RC2,增加很多令人心动的特性。scala和lift的开发工具也越来越完善,其中Intellij Idea+ SBT的组合最受scala开发者的欢迎。这里将详细介绍如何利用Intellij Idea + SBT从头开始搭建一个完美的开发的环境。

首先安装最新版本的idea社区版,这里最新版本的10.0。然后用其插件管理器安装最新的scala开发插件。接着使用maven的archetype建立一个lift maven工程。 
Java代码
  1. mvn archetype:generate -DarchetypeGroupId=net.liftweb -DarchetypeArtifactId=lift-archetype-basic_2.8.0 -DarchetypeVersion=2.1 -DarchetypeRepository=http://scala-tools.org/repo-releases -DremoteRepositories=http://scala-tools.org/repo-releases -DgroupId=demo.lift -DartifactId=helloworld -Dversion=1.0  


然后将其导入到idea中。修改project目录下的build.properties的内容为: 
Java代码
  1. project.organization=demo.lift  
  2. project.name=helloworld  
  3. project.version=1.0  
  4. sbt.version=0.7.4  
  5. def.scala.version=2.8.0  
  6. build.scala.versions=2.8.0  
  7. project.initialize=false  

修改LiftProject.scala的内容为: 
Java代码  
  1. import sbt._  
  2.   
  3. class LiftProject(info: ProjectInfo) extends DefaultWebProject(info) {  
  4.    override def scanDirectories = Nil  
  5.   // Add Maven Local repository for SBT to search for (disable if this doesn't suit you)  
  6.   val mavenLocal = "Local Maven Repository" at "file://"+Path.userHome+"/.m2/repository"  
  7.   val lift = "net.liftweb" %% "lift-mapper" % "2.1" % "compile"  
  8.   val jetty6 = "org.mortbay.jetty" % "jetty" % "6.1.25" % "test"  
  9.   val h2 = "com.h2database" % "h2" % "1.2.121" % "runtime"  
  10.   val servlet = "javax.servlet" % "servlet-api" % "2.5" % "provided"  
  11.   val junit = "junit" % "junit" % "3.8.1" % "test"  
  12. }  


关于为什么需要这样设置,请参照Lift的wiki。 

接下来就是使用SBT来对工程进行初始化。首先到SBT主页下载最新版本的SBT(现在最新版是0.7.4),然后将其安装到自己的操作系统。这里只介绍windows下的安装,其它系统下的安装方法请参照其主页的文档。 

在windows下安装SBT的步骤: 
第一步:将sbt-launch.jar放到一个不包含空格和中文的目录下,例如c:\bin。 
第二步:在sbt-launch.jar的同级目录新建一个脚本,取名sbt.bat。 
Ruby代码  
  1. set SCRIPT_DIR=%~dp0  
  2. java -Xmx512M -jar "%SCRIPT_DIR%sbt-launch.jar" %*   

第三步:将该目录加入到windows的Path变量中,以便可以在任何地方使用sbt命令。 

在SBT安装完成后,打开cmd,进入到刚才生成的maven工程的目录,运行sbt,sbt会根据pom.xml的配置自动下载依赖的包;运行jetty-run,待jetty启动完成后,访问http://localhsot:8080就可以看到我们可爱的helloworld界面了。 

SBT提供了对scala应用从开发到测试以及部署全周期管理,更多关于SBT的使用只是请参照SBT的主页的相关文档。这里再介绍一下如何一起使用SBT和JRebel。 

欲在SBT中使用JRebel,需要在两个地方进行配置: 
1)修改LiftProject.scala,加入 
Java代码  
  1. override def scanDirectories = Nil  

这样jetty将停止自动加载应用。 
2)修改sbt.bat,在sbt启动时加载jrebel 
Ruby代码  
  1. set SCRIPT_DIR=%~dp0  
  2. java -noverify -javaagent:/path/to/jrebel/jrebel.jar -Xmx512M -jar "%SCRIPT_DIR%sbt-launch.jar" %*   


在进行上述修改配置后,重新启动sbt,这时可以留意到sbt启动的同时加载了jrebel,运行"update","jetty-run", "~compile","~compile"会让sbt实时的编译改动过的scala类。 

让我们测试一下sbt+idea+jrebel的强大威力!在idea中修改 snippet下的 HelloWorld.scala,保存,可以在sbt console中看到输出的实时编译信息。刷新页面,可以马上看到改变。十分完美! 

总结: 
Intellij Idea是目前最好的scala ide,但其编译scala的速度偏慢;sbt提供了对scala应用从开发到测试部署的全生命周期管理,可以实时编译scala文件;jrebel让你不需要重启服务器就可以看到修改的效果。它们的组合是开发Scala、Lift应用的瑞士军刀,让你无往不利! 
加载中
0
回去干活
回去干活
这又是什么高科技,没听过....尼玛一天出一个新玩意,学到啥时候去阿.我还是用最老的PHP吧.真心学不来.
0
返回顶部
顶部