play framework + sbt入門之環境搭建

一 sbt的使用html

SBT = (not so) Simple Build Tool,是scala的構建工具,與java的maven地位相同。其設計宗旨是讓簡單的項目能夠簡單的配置,而複雜的項目能夠複雜的配置。java

sbt使用了ivy,默認將依賴包保存在用戶目錄.ivy下面,若是以爲默認路徑不合適,能夠把sbt.boot.properties文件的[boot]和[ivy]目錄修改成指定目錄,好比ivy-home是cache依賴包路徑,打比方能夠改成/home/user/.../ivy-home/  或者  F:\...\ivy-home\,而後指定路徑下生成的cache目錄將具體存儲sbt項目依賴包。 

git

1 sbt項目目錄github

和maven同樣,sbt有約定了一個通用的目錄結構,使用約定的結構會使後面的工做簡單不少。項目配置能夠在build.sbt文件裏定義,也能夠在base/project/build.scala文件裏定義,通常狀況下build.sbt就已經足夠,除非多工程項目或者須要不少特殊定義的項目shell

base/  
     build.sbt              //構建配置文件
     /project                 //也是構建配置的一部分
          build.scala         //高級配置,可選
     /src
         /main
         /scala
         /java
         /resources
     /test
         /scala
         /java
         /resources

 base表明項目的根目錄

2.sbt命令(若是mvn命令)express

sbt有哪些命令可用?輸入help命令查詢,即會列出一堆可用的命令,好比exit,reload等,不知道某個命令的做用?help 命令名,好比輸入help exit顯示exit命令的做用。api

列出的命令裏並無compile,test等經常使用的命令?由於那些不是sbt的命令而是當前工程的task. 輸入 tasks命令,就能夠看見 compile,test,package等等任務的說明了。瀏覽器

想查看項目的配置?用show命令,輸入show name,看當前項目的名字,輸入show libraryDependencies看當前項目依賴的庫,libraryDependencies太長記不住?輸入lib後按tab鍵! 交互窗口是有tab提示的!輸入help show,你能夠看到show命令的做用是顯示配置的值,若是show以後跟的是任務,則執行該任務並顯示任務執行的結果。 你能夠試試show compile看什麼結果,若是你不想執行compile,而是想看命令的說明,請用inspect命令,inspect命令比較複雜,執行後輸出的結果也比較複雜,具體這個命令的做用是什麼請help inspect, 不過得等理解了build definition的含義後才能看懂help說的是什麼。。。bash

經常使用的任務則有compile, test, run,package,doc等,請顧名思義或自行help之。另外這些任務經常還有些變種,好比package-doc,package-src等,用tasks命令查看任務的列表,必有一款適合您app

有一個強大的任務不得不特別拎出來講一下:console 
輸入console回車,會在當前會話內啓動一個REPL,不要告訴我你不知道REPL是scala解釋器的意思。。。就是你在命令行下輸入scala回車後進入的那個交互界面。

強大的是,sbt會加載你的項目依賴的所有jar包和你本身的代碼! 你能夠在這個解釋器裏實驗你的半成品。 個人模板工程裏有一個sample/Account.scala文件,十幾行很簡單的代碼,你能夠看一下,而後在console窗口裏玩弄Account類和Account伴生對象. 不過別忘了先import sample._

由於依賴的jar包也都被加載了,因此對於那些你可能還不熟悉的第三方庫,你有能夠在console裏玩個痛快!這功能很給力,誰用誰知道。

順便在提一下,sbt命令有3種執行模式: 
一、交互式,即上文所描述的 
二、批處理式,即在命令行下輸入sbt 命令名來執行,好比sbt compile就會編譯代碼,而不進入交互模式 
三、連綿不絕式,在命令名前加上~號,即會進入連綿不絕模式,好比~compile,會編譯當前代碼,而後監聽代碼改變,每當你編輯了代碼並保存後,sbt就會自動編譯代碼,~test也同樣,當你修改代碼後自動編譯並運行單元測試。按回車鍵可退出此模式。

 

3.build definition釋義

你前面應該試過show name和show libraryDependencies了吧?show出來的結果就是來自你的build.sbt文件,也就是build definition了。打開build.sbt就能夠看到name := 「sbt11template」 還有其餘的一堆xxx := xxxx,很顯然的,這就是個key-value pair, sbt就是讀取配置文件並構建一個key-value的map. 可是在build.sbt裏面並不是key := value, 而是key := expression. 文件裏的每一行實際上是一句scala語句,不行你能夠試試把 
name := 「sbt11template」 改爲 
name := {「sbt11template」.toUpperCase} 
而後reload, 再show name,你會看到變成大寫的SBT11TEMPLATE

:=是最經常使用的方法,其做用就是將key設置成expression的值,相同的key若是被屢次賦值,則後面的值會覆蓋掉前面的值。適用於簡單類型的key,好比name,version等。

其餘的經常使用方法有 
+=,將值添加進現有值裏,適用於集合類型的key,好比libraryDependencies

++=,將一個集合值加入當前集合裏

~= ,這個牛X,你在~=後面寫個函數,~=將key的當前值傳給你的函數,而後將函數結果做爲新值,好比你能夠在name := xxx後面再來一句 
name ~= { _. toUpperCase },同樣是把name變成大寫

<<= 將另外一個key的值賦給當前key,好比auther <<= name ,這個方法還有個高級用法,你能夠組合多個其餘key的值,賦給當前key,用文檔裏的例子

name <<= (name, organization, version) { (n, o, v) => "project " + n + " from " + o + " version " + v }
  • 1

還有適用於集合類型的版本 
<+= 和 <++= 
這些語法的官方文檔在此 
https://github.com/harrah/xsbt/wiki/Getting-Started-More-About-Settings

 

4.

. 依賴管理

對於不打算經過官方repository管理的第三方庫,在項目目錄下建個lib目錄,把jar包扔進去就好了。

但願sbt待爲管理的則在build.sbt裏用下面的語法加入

libraryDependencies += groupID % artifactID % revision % configuration
  • 1

% configuration是可選的,表示某依賴庫只在特定配置中須要,好比模板項目裏的」org.specs2」 %% 「specs2」 % 「1.7.1」 % 「test」 是單元測試框架,只在測試時須要。

若是你視力好,會看到其中有個 %%,而不是一個%,這表示要求sbt尋找用當前你配置的scala版本編譯出來的jar包,這是由於scala不一樣版本編譯出來的結果會不兼容(悲劇),但願之後scala社區會解決這不兼容的問題。。。

對於依賴的java語言寫的庫的jar包,就沒這問題了,好比libraryDependencies += 「org.slf4j」 % 「slf4j-api」 % 「1.6.4」 就不須要%%了

配置好依賴後,運行sbt update,sbt會自動到maven庫和scala官方庫裏去找這些jar包並下載到你的用戶目錄的.ivy2目錄裏面,若是你不一樣的項目用了相同的庫,則sbt下載一次就夠了。

若是你但願sbt從你本身配置的repository裏下載,使用這個語法:

resolvers += name at location
  • 1

好比

resolvers += "Scala-Tools Maven2 Snapshots Repository" at "http://scala-tools.org/repo-snapshots"
  • 1

全部的一切都是經過key類配置的,key 的列表在http://harrah.github.com/xsbt/latest/sxr/Keys.scala.html 

二 play的使用

1 .sbt的下載安裝(略)

2. paly framework的安裝

其實根本不用安裝,建項目也只是直接從對應的模板開始

若是idea是Ultimate收費版的,什麼都不用作,能夠直接建play2項目

若是是社區版,那就沒辦法了,只能用導入的方式

(1)建立項目,依賴與g8模板

Java seed template

sbt new playframework/play-java-seed.g8

Scala seed template

sbt new playframework/play-scala-seed.g8

(2)如今能夠輸入 項目名、組織名、Scala 版本、Play 版本、SBT 版本:

(3)試着運行這個項目, sbt run直接運行

或者sbt進入命令行環境,再輸入run

(4)idea import這個項目,利用build sbt導入

(5)等待sbt相關依賴加載完成

(6)sbt shell 中運行sbt run 或者sbt console中運行 sbt run

便可用瀏覽器打開http://localhost:9090 看到welcome to play

(7)編譯命令用compile,測試命令用test

相關文章
相關標籤/搜索