Play For Scala 开发指南

雨燕双飞 提交于 2019-11-27 00:38:00
转载请注明joymufeng,欢迎访问 PlayScala社区(http://www.playscala.cn)

原文链接:http://www.playscala.cn/doc/catalog?_id=j1_11

 准备环境

 安装JDK8

单击这里下载并安装JDK8,安装完成后在命令行查看Java的版本号:

C:\Users\Lenovo>java -version java version "1.8.0_111" Java(TM) SE Runtime Environment (build 1.8.0_111-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)

如果上面的命令执行报错,请手动将路径"Java安装目录/bin"添加至环境变量。

 安装SBT

Play使用SBT作为构建工具,一个Play项目其实就是一个SBT项目。单击这里下载并安装SBT。

 创建Play项目

有两种方式创建Play项目,一是直接下载官方提供的起步项目Starter Project,二是通过sbt命令行创建一个Play项目。

 下载Starter Project

打开Play Starter Projects页面,下载Play 2.6.x Scala Starter Example,下载后解压,目录结构如下:

根目录下的build.sbt文件表明这是一个SBT项目,另外还有一个sbt.bat启动脚本,说明Starter Project已经内置SBT构建工具,如果你已经成功安装SBT,则可以删除sbt-dist,sbt和sbt.bat。

 通过SBT命令行创建

这种方式需要你事先安装SBT,然后执行创建命令:

sbt new playframework/play-scala-seed.g8

命令执行成功后,在当前目录下会生成类似Starter Project的目录结构,表明项目创建成功了。

 启动Play项目

进入命令行,导航至项目根目录,执行启动命令sbt run:

第一次启动时,由于SBT要下载大量的依赖,所以时间可能会久一点,倒数第二行表明,Play项目已经在9000端口启动成功了。

Windows进入命令行小技巧:在文件夹窗口,单击地址栏,输入cmd并回车,命令窗口会随后启动并自动定位至当前目录。

Play并没有实现Servlet容器,而是使用Akka Http实现了一个高性能的Http服务器,所以Play项目的运行不依赖于Tomcat等Servlet容器。

由于SBT要从国外服务器下载依赖,所以第一次启动的时间会比较久,如果想加快启动速度请参考配置Repox社区公服

我们来看看效果吧,在浏览器中访问:http://localhost:9000

我们来试着改动下代码,使用文本工具打开app\controllers\HomeController.scala文件,修改index方法如下:

 def index = Action {    Ok("Welcome to Play")  }

再刷新下浏览器试试,

Play会自动加载修改过的代码,所以改完代码只需要刷新浏览器就可以了。

Play项目的默认启动端口是9000,如果想换成其它端口,在命令行中先执行sbt,进入sbt控制台后在执行run 9001


 发布Play项目

Play项目的发布也是通过sbt命令完成的,进入命令行执行sbt dist,命令执行完成后,在target\universal目录下会生成应用文件play-scala-starter-example-1.0-SNAPSHOT.zip,该应用文件解压后目录结构如下:

bin目录中包含了应用的启动脚本play-scala-starter-example,与项目名称同名。将play-scala-starter-example-1.0-SNAPSHOT.zip上传至服务器并解压,执行启动命令:

nohup ./play-scala-starter-example -J-Xms1g -J-Xmx1g -Dhttp.port=8080 > ../log.txt &

-J-Xms1g -J-Xmx1g参数指定运行内存为1g, -Dhttp.port=8080参数指定启动端口为8080。启动成功后,应用根目录下会生成一个RUNNING_PID文件,该文件保存了启动的进程PID。停止应用的命令如下:

cat ../RUNNING_PID | xargs kill

xargs命令将RUNNING_PID内容作为参数传递给kill。


 重新发布项目

当项目代码发生变动了,则需要重新发布项目。执行sbt stage命令,命令执行完成后,在\target\universal\stage\lib会生成如下两个jar文件:

将这两个jar文件上传至服务器覆盖同名文件,然后执行重启命令:

cat ../RUNNING_PID | xargs kill && nohup ./play-scala-starter-example -J-Xms1g -J-Xmx1g -Dhttp.port=8080 > ../log.txt &


 配置IDE开发环境

IDE建议选择IntelliJ IDEA + Scala插件。首先下载并安装IntelliJ IDEA 社区版,安装完成后,进入目录"IDEA安装目录/bin",修改文件idea64.exe.vmoptions调整启动参数,为了让IDEA运行更流畅,建议将内存尽量调大一点:

-Xms8g -Xmx8g

保存配置,双击idea64.exe启动IDEA,进入插件管理(Plugin)界面准备安装Scala插件。如果是第一次启动IDEA,显示窗口如下:

单击窗口右下角的Configure,再单击Plugins便可进入插件窗口。如果启动IDEA后直接进入了主界面,则单击主窗口左上角菜单File-Settings...,在弹出的设置窗口左侧单击Plugins,则可看到如下插件窗口:

单击按钮Install JetBrains plugin...弹出插件搜索窗口,输入scala后结果如下:

选中窗口左侧的Scala插件,单击右侧Install按钮,等待插件安装完成后重启IDEA。IDEA重启后,如果进入了上面提过的小窗口,则直接单击Open按钮,如果直接进入了主窗口,则单击左上角菜单File-Open...,然后定位到Play项目目录,选中build.sbt文件,单击OK,

接着会提示以项目方式打开还是以文件方式打开,单击Open as Project

取消Library sourcesSBT sources左侧的复选框,如果Project JDK右侧下拉列表为空,则单击旁边的New...按钮新建一个,最后单击OK:

IDEA将会先进行项目构建,构建成功后显示项目主窗口:

如果修改了Play项目的某些配置,但是在IDEA中没有立即生效,单击右侧SBT projects窗口左上角的蓝色刷新按钮 即可。

实际上Play项目并不依赖于IDE开发环境,上文中说过,Play项目其实是SBT项目,通过SBT在命令行可以完成Play项目生命周期的整个构建过程。也就是说你完全可以使用文本工具开发Play项目,然后在命令行进行构建。但是为了提高开发效率,还是建议使用IDEA进行开发,不仅有语法提示上的优势,在Play项目调试时IDEA将发挥很重要的作用。

通常的开发流程是:首先在命令行执行sbt run,以开发模式启动项目,在浏览器中打开http://localhost:9000 ,然后在IDEA中修改代码,改完后直接刷新浏览器即可。IDEA中有时会出现一些报错信息,例如常见的模板引用错误:

这是由于模板函数index是在项目编译过程中动态生成的,所以新增的模板函数在IDEA中会提示找不到,这时只要在命令行执行sbt compile,然后在SBT projects窗口单击蓝色刷新按钮,错误即会消失。如果你不是个处女座,建议忽略这些错误,只要命令行不报错即可。

OK,至此你的第一个Play项目之旅就结束了,下次再会!

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!