Play For Scala 開發指南 - 第4章 第一個Play項目 頂 原

轉載請註明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,顯示窗口如下:

start.jpg

單擊窗口右下角的Configure,再單擊Plugins便可進入插件窗口。如果啓動IDEA後直接進入了主界面,則單擊主窗口左上角菜單File-Settings...,在彈出的設置窗口左側單擊Plugins,則可看到如下插件窗口:

plugins.jpg

單擊按鈕Install JetBrains plugin...彈出插件搜索窗口,輸入scala後結果如下:

scala.jpg

選中窗口左側的Scala插件,單擊右側Install按鈕,等待插件安裝完成後重啓IDEA。IDEA重啓後,如果進入了上面提過的小窗口,則直接單擊Open按鈕,如果直接進入了主窗口,則單擊左上角菜單File-Open...,然後定位到Play項目目錄,選中build.sbt文件,單擊OK,

open.jpg

接着會提示以項目方式打開還是以文件方式打開,單擊Open as Project

open as.jpg

取消Library sourcesSBT sources左側的複選框,如果Project JDK右側下拉列表爲空,則單擊旁邊的New...按鈕新建一個,最後單擊OK:

sbt.jpg

IDEA將會先進行項目構建,構建成功後顯示項目主窗口:

main.jpg

如果修改了Play項目的某些配置,但是在IDEA中沒有立即生效,單擊右側SBT projects窗口左上角的藍色刷新按鈕 即可。

實際上Play項目並不依賴於IDE開發環境,上文中說過,Play項目其實是SBT項目,通過SBT在命令行可以完成Play項目生命週期的整個構建過程。也就是說你完全可以使用文本工具開發Play項目,然後在命令行進行構建。但是爲了提高開發效率,還是建議使用IDEA進行開發,不僅有語法提示上的優勢,在Play項目調試時IDEA將發揮很重要的作用。

通常的開發流程是:首先在命令行執行sbt run,以開發模式啓動項目,在瀏覽器中打開http://localhost:9000 ,然後在IDEA中修改代碼,改完後直接刷新瀏覽器即可。IDEA中有時會出現一些報錯信息,例如常見的模板引用錯誤:

error.jpg

這是由於模板函數index是在項目編譯過程中動態生成的,所以新增的模板函數在IDEA中會提示找不到,這時只要在命令行執行sbt compile,然後在SBT projects窗口單擊藍色刷新按鈕,錯誤即會消失。如果你不是個處女座,建議忽略這些錯誤,只要命令行不報錯即可。

OK,至此你的第一個Play項目之旅就結束了,下次再會!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章