Lift和Scala的受欢迎程序仍在不断升温,越来越多的公司开始采用scala和Lift搭建自己的企业应用。在我写这篇文章之时,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工程。
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的内容为:
project.organization=demo.lift
project.name=helloworld
project.version=1.0
sbt.version=0.7.4
def.scala.version=2.8.0
build.scala.versions=2.8.0
project.initialize=false
修改LiftProject.scala的内容为:
import sbt._
class LiftProject(info: ProjectInfo) extends DefaultWebProject(info) {
override def scanDirectories = Nil
// Add Maven Local repository for SBT to search for (disable if this doesn't suit you)
val mavenLocal = "Local Maven Repository" at "file://"+Path.userHome+"/.m2/repository"
val lift = "net.liftweb" %% "lift-mapper" % "2.1" % "compile"
val jetty6 = "org.mortbay.jetty" % "jetty" % "6.1.25" % "test"
val h2 = "com.h2database" % "h2" % "1.2.121" % "runtime"
val servlet = "javax.servlet" % "servlet-api" % "2.5" % "provided"
val junit = "junit" % "junit" % "3.8.1" % "test"
}
关于为什么需要这样设置,请参考Lift的
wiki。
接下来就是使用SBT来对工程进行初始化。首先到
SBT主页下载最新版本的SBT(现在最新版是0.7.4),然后将其安装到自己的操作系统。这里只介绍windows下的安装,其它系统下的安装方法请参考其主页的文档。
在windows下安装SBT的步骤:
第一步:将sbt-launch.jar放到一个不包含空格和中文的目录下,例如c:\bin。
第二步:在sbt-launch.jar的同级目录新建一个脚本,取名sbt.bat。
set SCRIPT_DIR=%~dp0
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,加入
override def scanDirectories = Nil
这样jetty将停止自动加载应用。
2)修改sbt.bat,在sbt启动时加载jrebel
set SCRIPT_DIR=%~dp0
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应用的瑞士军刀,让你无往不利!
分享到:
相关推荐
lift:constexpr C ++ 17库,用于简化应用程序代码中的高阶函数
使用 sbt-web 和 jRebel 提升 我尝试使用资产处理和热类和资源部署来配置和 。 快速开始 确保将 JREBEL_HOME 定义为环境变量,例如我在 ~/.bash_profile 中定义了以下内容: export JREBEL_HOME=$HOME/bin/jrebel ...
sails_test 使用 Sails + Vue.js + bower 如何启动服务器 必须安装 node.js。 $ npm -g install bower $ npm -g install bower-installer $ npm -g install sails ...基于以上,我们计划添加更多
gem 'lift' 然后执行: $ bundle 或将其自己安装为: $ gem install lift 用法 class Person include Lift attr_accessor :name , :email end Person . new name : 'adam' , email : 'example@example.com' ...
ECCV2016年关于深度学习的一篇论文----LIFT:Learning Invariant Feature Transform.很值得学习
#lift-examples 我在博客上发布的不同 Lift 示例#要求Nodejs 版本 >= 0.8.0 Grunt 0.4.x 鲍尔 #安装需要的组件使用您的操作系统包管理安装节点。 然后:(您可能需要以 sudo 身份运行它们) $ npm install -g grunt...
Lift JS旨在将旧浏览器提升到与现代浏览器相同的水平。 它是按需加载的AMD模块的集合,以填充缺少的JS功能。 用您最喜欢的AMD加载器加载LiftJS。 例子 这里有一些代码示例,展示了如何将lift JS与各种AMD装载程序...
LIFT论文和自己的注解,好奇怪为什么没有资源分为0的选项呢?
用fpga控制电梯,实现五层电梯的升降控制,运用vhdl编辑程序.
Lift 编程语言:高性能、可移植的函数式 GPU 编程语言。部分由Google赞助支持
简单的应用程序即可比较和查找Lift.do习惯之间的关系。 由于Lift.do还没有API(还?),因此您必须从Lift.do的“设置”中导出您的习惯。 然后,您可以将该文件上传到此应用程序,并开始比较您的习惯。 你的习惯得...
lift_blank 2.6项目适合Heroku部署。 可以在现场观看 或通过单击此按钮来部署自己的: 申请您的电梯项目 如果您已经具有要在Heroku上部署的Lift项目,则需要更新以下内容。 project/plugins.sbt :添加sbt-...
lift-sim:电梯(电梯)模拟器。 使用香草JS制作,以提高我的面向对象设计,数组操作和HTML拖放API的能力
富士lift变频器软件Lift3.1.0Setup.rar
[Packt Publishing] Lift 应用开发技巧 (英文版) [Packt Publishing] Lift Application Development Cookbook (E-Book) ☆ 图书概要:☆ Over 50 practical recipes to build web applications using Lift, the ...
javascript 以获取特定于JavaScript语言的详细信息目录 特征将脚本从结果添加到package.json快来了从结果安装依赖项从结果配置eslint配置用法安装$ npm install @form8ion/lift-javascript --save-prod例子进口...
风帆样板 cd frontend && npm run build sails lift
lift / api.md 在这里可以找到每个端点的详细信息,包括HTTP响应代码,请求参数和主体响应。 先决条件 此应用程序需要将docker和docker-compose都安装在本地。所有其他软件包和要求都安装在docker和docker-compose...
提升授权 Lift应用程序的oauth2授权服务器