export PATH=$PATH:/path/to/play20
Windows中,你也需要相应的设置到全局环境变量中。
$ play help
如果安装正常,你将会看到如下基本帮助信息:
新建应用最容易的方式就是使用 play new 命令。
它將询问一些信息:
注意,此时选择的模版不意味着你將来你不能更换其它语言。例如你可以选择默认Java模版而將来使用Scala开发。
一旦应用创建,你可以再次使用play命令进入 Play2.0 控制台。
不安装Play而新建项目
你也可以用 sbt 新建项目,而不必安装Play。
但首先得安装 sbt 0.11.2。
仅需为新项目新建一个目录,并使用两步配置你的 sbt
在project/plugins.sbt,添加:
// The Typesafe repository resolvers += "Typesafe repository " at "http://repo.typesafe.com/typesafe/releases/" // Use the Play sbt plugin for Play projects addSbtPlugin("play" % "sbt-plugin" % "2.0")
确保替换上图的 2.0 为你想使用的确切版本。如果你想使用snapshot版本,你需要特别的resolver:
// Typesafe snapshots resolvers += "Typesafe Snapshots " at "http://repo.typesafe.com/typesafe/snapshots/"
在project/Build.scala中:
import sbt._ import Keys._ import PlayProject ._ object ApplicationBuild extends Build { val appName = "My first application " val appVersion = "1.0" val appDependencies = Nil val main = PlayProject ( appName , appVersion , appDependencies , mainLang = SCALA ) }
你可以在该目录中启动:sbt
sbt將加载项目和解析依赖。
解剖 Play 2.0 应用结构
标准应用布局
Play应用的标准布局保持尽量简洁。一个标准的应用布局看起来像这样:
app → Application sources └ assets → Compiled asset sources └ stylesheets → Typically LESS CSS sources └ javascripts → Typically CoffeeScript sources └ controllers → Application controllers └ models → Application business layer └ views → Templates conf → Configurations files └ application.conf → Main configuration file └ routes → Routes definition public → Public assets └ stylesheets → CSS files └ javascripts → Javascript files └ images → Image files project → sbt configuration files └ build.properties → Marker for sbt project └ Build.scala → Application build script └ plugins.sbt → sbt plugins lib → Unmanaged libraries dependencies logs → Standard logs folder └ application.log → Default log file target → Generated stuff └ scala-2.9.1 └ cache └ classes → Compiled class files └ classes_managed → Managed class files (templates, ...) └ resource_managed → Managed resources (less, ...) └ src_managed → Generated sources (templates, ...) test → source folder for unit or functional tests
app/目录
你当然也可以定义自已的包,如:app/utils。
注意,Play 2.0 中,控制器,模型和视图的包名已无硬性限制,可以定制了(如以com.yourcompany开头)。目录被分为三个标准的子目录,images,stylesheets,javascript。你应该像这样组织你的静态资源,保持一致性。
logs project/project project/target target tmp
使用play2.0控制台
$ cd /path/to/any/application $ play
[My first application] $ help play
[My first application] $ run开发模式中,服务器將以自动重载特性启动,意味着每次请求,Play將重新检查项目并编译必要的文件。如有必要,应用將自动重启。
如有任何编译错误,將在浏览器中直接显示。
[My first application] $ compile启动交互控制台
输入 console將进入Scala交互控制台,测试你的Scala代码:
[My first application] $ console
调试
启动控制台的时候,你也可以请求Play启动一个JPDA调试端口。稍后可以用Java debugger连接。使用play debug命令:
$ play debug
JPDA端口就绪时,JVM將打印调试日志:
Listening for transport dt_socket at address: 9999
注意:使用 play debug ,JPDA將socket绑定于9999端口。你也可以设置JPDA_PORT环境变量改变端口,如使用set JPDA_PORT=1234。
使用sbt特性
Play控制台也不过是一个平常的sbt控制台,因此你可以使用sbt特性,如解发执行.
如运行 ~compile
[My first application] $ ~ compile
编译行为將会在每次你改变源文件的时候触发。
如果使用 ~run
[My first application] $ ~ run
编译行为將在开发服务器启动后触发。
类似的你也可以运行 ~test,便于你每次修改源文件后自动测试。
[My first application] $ ~ test
直接使用 play 命令
你也可以直接使用play命令,无须启动play控制台。如输入play run:
$ play run [info] Loading project definition from myFirstApp/project [info] Set current project to My first application --- (Running the application from SBT, auto-reloading is enabled) --- [info] play - Listening for HTTP on port 9000... (Server started, use Ctrl+D to stop and go back to the console...)
应用將直接启动。当输入Ctrl+D后,將退回到OS的控制台。
强制清理
如果某些东西出错,你认为sbt缓存已经错误,可以在OS命令行中使用 clean-all 命令,清理所有生成的目录。
$ play clean-all
配置你喜欢的IDE
使用Play开发是简单的。你甚至不需要一个特别的IDE,Play自动编译和刷新修改过的文件,仅使用一个简单的文本编辑器也未尝不可。
然而,使用一个先进的Java或Scala IDE,可以提高生产力,如自动完成,重构和调试。
Eclipse
生成配置文件
Play针对生成eclipse配置文件单独提供了一个命令。將一个Play项目转成Eclipse项目,使用 eclipsify 命令:
[My first application] $ eclipsify
你还需通过File/Import/General/Existing project导入Eclipse工作区:
你可以使用 play debug run 启动应用,稍后使用JPDA 启动器在任何的启动会话中连接。停止调试会话不会导致服务器停止。
提示:你可以通过 ~run 运行应用,可使改变的文件直接编译。这种方式,可以监听view目录下的模版,并自动编译改变的文件。如果你使用正常的 run 运行,你则需要每次刷新浏览器。
如果你做了比较重要的更新,如改变类路径,使用 eclipsify 重新生成配置文件。(还需要刷新eclipse工程)
提示:在团队协作中,不要提交eclipse配置文件!
生成的配置文件包含了框架安装路径的绝对引用。这与你的本地安装环境密切相关。团队协作中,每个开发者必须自行维护他的Eclipse配置文件。
IntelliJ
生成配置文件
Play为生成Intellij IDEA工程配置单独提供了一个命令。將一个Play项目转成IDEA模块,使用 idea 命令:
[My first application] $ idea
稍后你需要將应用导入工程(File->New Module->Import existing Module)
提示:There is an Intellij IDEA issue regarding building Java based Play2 apps while having the scala plugin installed. Until itʼs fixed, the recommended workaround is to disable scala plugin.
调试,首先添加调试配置:
打开 Run/Debug 配置对话框,点击 Run -> Eclipse 配置
添加远程配置,选择 Remote
配置:
Set a name
Transport : Socket
Debugger mode: Attach
Host: localhost
Port: 9999
Select module you imported
关闭对话框 - 单击 Apply
以调试模式启动play
$ play debug
將打印:
Listening for transport dt_socket at address: 9999
设置一些断点。运行该应用(必须在终端中运行 play debug)。最后,访问http://localhost :9000。IntelliJ將在断点处中断。
如果你做了比较重要的更新,如改变类路径,使用 idea 重新生成配置文件。
Netbeans
生成配置文件
现阶段,Play未提供内置的Netbeans项目生成支持。但你可以通过Netbeans sbt插件生成一个Netbeans Scala工程。
首先编辑 plugins.sbt 文件:
``` // Comment to get more information during initialization logLevel := Level.Warn resolvers ++= Seq( DefaultMavenRepository, “Typesafe Repository” at “http://repo.typesafe.com/typesafe/releases/", ”remeniuk repo“ at ”http://remeniuk.github.com/maven" ) addSbtPlugin(“play” % “sbt-plugin” % “2.0-RC2”) libraryDependencies += “org.netbeans” %% “sbt-netbeans-plugin” % “0.1.4” ```
运行:
$ play netbeans
示例应用
在Play2.0发行包中,提供了一些使用Java和Scala开发的示例应用。这是查看代码和示例的很好起点。
示例应用程序位于你的Play安装目录的 samples/ 子目录下。
Hello World
这是一个最基本的应用,展示了Play的一些特性:
编写控制器和actions
路由和解析路径
Linking to public assets.
使用模版引擎
表单验证
电脑库存
这是一个基本的CRUD示例,底层使用JDBC连接。它展示了:
访问JDBC数据库,在Java中使用Ebean,在Scala中使用Anorm。
分页表格和CRUD表单。
集成CSS框架(Twitter Bootstrap)。
Twitter Bootstrap 需要一个有别于Play2.0提供的默认表单助手的不同表单布局,因此该示例还演示了集成自定义表单构造的示例。
表单
一个假设的表单应用,展示了表单的不同使用用例. 它演示了 :
编写包含验证的复杂表单
处理表单的动态重复值
ZenTasks
该示例展示了基于ajax的应用。这会是一个持续改进的项目,我们计划在后续版本中加入新特性。目前你可以学到:
集成授权与验证
使用Ajax与JavaScript解析路由
集成编译 - LESS CSS 和 CoffeeScript
CometClock
这是一个非常简单的Comet演示,推送从服务器端给浏览器推送clock事件,使用forever-frame技术。他演示了怎样:
创建Comet连接
使用 Akka actors (使用Java版本)
编写自定义 Enumerators (Scala版本).
WebSockets 聊天室
一个聊天室应用,使用WebSocket构建。采用BOT方式,在同一聊天室的会谈,他演示了:
Comet 监测
一个监测Play服务器性能的手机移动应用 . 他过演示了 :
Enumerators 和 Enumeratees的高级应用