Play For Scala 开发指南 - 第4章 第一个Play项目

 准备环境

 安装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项目之旅就结束了,下次再会!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python

MySQL下载安装、基本配置、问题处理

一 mysql介绍 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司。MySQL 最流行的关系型数据库管...

584100
来自专栏程序员互动联盟

【编程基础】linux常用命令介绍(一)

系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecod...

424110
来自专栏子勰随笔

Linux & MacOS中一些常用命令备忘

19060
来自专栏乐百川的学习频道

用winsw让任何Windows程序都能运行为服务

winsw介绍 有时候我们需要在Windows下开机运行某些程序,这对于有图形界面的程序来说一般不是什么事,在选项中选中开机启动,然后它们就可以自动运行了。但是...

377100
来自专栏惨绿少年

练习题四

第1章 练习题 1.1 每天晚上 12 点,打包站点目录/var/www/html 备份到/data 目录下(最好每次备份按时间生成不同的备份包) 1.1.1 ...

24600
来自专栏云计算教程系列

给你的CVM安装一个面板吧!

Vesta Control Panel是一个免费的开源控制面板,具有网站搭建,数据库,邮件管理等功能。在本教程中,您将在Ubuntu或CentOS服务器上安装控...

25730
来自专栏增长技术

Android Debug Bridge

Android Debug Bridge,Android调试桥接器,简称adb,是用于管理模拟器或真机状态的万能工具, 采用了客户端-服务器模型,包括三个部分:

37120
来自专栏学一学大数据

一文上手zabbix安装配置【运维篇】

21130
来自专栏云计算教程系列

如何在Ubuntu 16.04上使用Apache和mod_wsgi为Django应用程序提供服务

Django是一个功能强大的Web框架,可以帮助您快速启动Python应用程序或网站。Django包含一个简化的开发服务器,用于在本地测试您的代码,但是对于任何...

17200
来自专栏mantou大数据

MacOS多版本Python切换方案

65740

扫码关注云+社区

领取腾讯云代金券