启动控制台
Play 2.0 控制台是基于 sbt 的为开发而准备的控制吧, 它允许你管理整个 Play 应用的开发周期.
要启动控制台, 进入到现有的 Play 应用的目录,然后运行 play
脚本:
Unmi 注: 虽然 sbt 是为 Scala 准备的构建工具,但是即使你创建的应用选的是 Java 语言, 我们仍然是要依赖于 sbt. 在 Play 1.x 的时候不存在 Play 控制台,要么就是直接把应用运行起来了。在 Play 1.x 的项目目录下运行 play 命令只会显示简单的帮助信息。
play 命令进入到当前应用的控制台下,提示符是 [应用的名称] $
1 |
$ cd /path/to/any/application $ play |
获取帮助
使用 help play
命令可得到关于可用命令的基本的帮助内容:
1 |
[My first application] $ help play |
开发模式下运行服务
要在开发模式下运行当前应用, 用 run
命令:
1 |
[My first application] $ run |
在此种模式下, Server 将会运行在开启了自动重加载的特征下, 意味着每次请求时, Play 都会检查项目并编译必须的资源. 如果需要的话, 应用还会自动地重启.
假如有出现任何的编译错误, 你能在浏览器中直接看到编译的错误提示:
想要停止 Server, 按下 Crtl+D
组合键, 你又会回到 Play 控制台提示符下.
编译
在 Play 2.0 中, 你也可以在未运行服务的情况下编译你的应用. 只要运行 compile
命令: Unmi 注: 这就是 sbt 给我们带来的特性。
1 |
[My first application] $ compile |
启动交互控制台
敲入 console
可进入到 Scala 交互控制台, 这里允许你交互性的测试你的代码: Unmi 注: 看来,即使是完全用 Java 语言来写 Play 2.0 的程序也是有必要掌握 Scala 语言的。
1 |
[My first application] $ console |
调试
在启动控制台的时候你可以要求 Play 启动 JPDA 调试端口. 你就可以用 Java 调试器连接上这个端口. 使用 play debug
命令来做到这个:
1 |
$ play debug |
当 JPDA 端口可用时, JVM 会在启动期间打印下行日志:
1 |
Listening for transport dt_socket at address: 9999 |
注: 使用
play debug
命令后, JPDA socket 会在端口9999 上打开
. 你也可以设置JPDA_PORT
环境变量改成你想要的端口, 如使用set JPDA_PORT=1234
.
使用 sbt 特性
Play 控制台实质就是一个 sbt 控制台, 所以你可以使用 sbt 的特性, 像触发执行(triggered execution).
例如, 使用 ~ compile
1 |
[My first application] $ ~ compile |
这样每次有文件改动都会触发编译动作.
如果你用 ~ run
1 |
[My first application] $ ~ run |
开发服务器运行的时候就会开启触发编译特性.
你也可以为 ~ test 做一样的事情
, 当有源文件改动时会进行持续性测试你的项目:
1 |
[My first application] $ ~ test |
直接使用 play 命令
你也可以不进入 Play 控制台而直接运行命令. 例如, 键入 play run
: Unmi 注: Play 1.x 就是只能这么做。
1 2 3 4 5 6 7 8 9 |
$ 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 退出服务的时候
, 你会回到系统的提示符下.
强制清理
要是哪儿出问题了, 并且你认为是 sbt 缓存被毁坏了, 可在系统命令行下用 clean-all 命令来清除掉所有自动产生的目录
.
1 |
$ play clean-all |
Unmi 注: 执行 play clean-all 命令后会删除掉项目下的 logs 和 target 两目录。