轉載請註明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 sources
和SBT 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項目之旅就結束了,下次再會!