Scala構建工具(SBT)教程

咱們使用 sbt 建立、測試、運行和提交做業。該教程會解釋你在咱們的課程中將會用到的全部 sbt 命令。工具安裝頁說明了如何安裝 sbt。服務器

啓動 sbt

要啓動 sbt,打開一個終端(Windows 中的」命令提示符「)並切換到你正在解決的做業所在目錄。輸入sbt 將會打開 sbt 命令提示符。工具

                                        #這是 sbt 的殼

運行 Scala 解釋器

你可使用 console 任務在 sbt 內啓動 Scala 解釋器。解釋器(也叫作 REPL,表明」讀算印復 (Read Eval Print Loop「)對於試驗 Scala 代碼小片斷頗有用。注意,只有當你的代碼沒有編譯錯誤時,解釋器才能啓動。oop

要退出解釋器並返回 sbt,輸入 ctrl-d單元測試

> console[info] 正在啓動 Scala 解釋器...
歡迎來帶 Scala 版本 2.10.1 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_04-ea).
輸入表達式獲得運算值。
輸入 :help 獲取更多信息。

scala> println("Oh, hai!") # 這是Scala解釋器,輸入一些代碼
Oh, hai!

scala> val l = List(1, 2, 3)
l: List[Int] = List(1, 2, 3)

scala> val squares = l.map(x => x * x)
squares: List[Int] = List(1, 4, 9)

scala>                      # 輸入Ctrl + D退出Scala解釋器
[success] Total time: 20 s, completed Mar 21, 2013 11:02:31 AM
>                           # 咱們回到 sbt 殼

編譯你的代碼

compile 任務會編譯做業的源代碼,做業位於src/main/scala 目錄。測試

> compile[info] 正在編譯4個Scala源文件到
       /Users/aleksandar/example/target/scala-2.10.1/classes...
[success] 總用時: 1秒,完成時刻 2013年5月21日 下午 11:04:46
>

若是源代碼中包含錯誤,來自編譯器的錯誤信息會顯示出來。ui

測試你的代碼

src/test/scala 目錄包含項目的單元測試。要在 sbt 中運行這些測試,你可使用test命令。編碼

> test[info] ListsSuite:
[info] - one plus one is two
[info] - sum of a few numbers *** FAILED ***
[info]   3 did not equal 2 (ListsSuite.scala:23)
[info] - max of a few numbers
[error] 失敗: 總計 3, 失敗 1, 錯誤 0, 經過 2, 忽略 0
[error] 失敗的測試:
[error]   example.ListsSuite
[error] {文件:/Users/luc/example/}assignment/test:test: 測試不成功
[error] 總用時: 5 秒, 完成時刻 2012年8月10日 晚上 10:19:53
>

運行你的代碼

若是你的項目有個對象帶有方法(或者對象繼承了 App 品質(trait)),那麼你就能夠經過輸入 run 在 sbt 中運行代碼。在 sbt 發現有多個 main 方法時,它會詢問你想執行哪個。spa

> run多個 main classes 給檢測到,選擇一個執行:

 [1] example.Lists
 [2] example.M2

輸入號碼: 1[info] 運行 example.Lists 中
main method!
[success] 總用時: 33 秒, 完成時刻 2012年8月10日 晚上 10:25:06
>

運行樣式檢查器

在做業評分過程當中,咱們在你提交的源代碼上運行樣式檢查器以發現常見的編碼樣式問題。要確保你的代碼符合咱們的所有樣式規則,你能夠在提交前運行樣式檢查器本身檢查。sbt 的styleCheck任務執行以下。scala

> styleCheck[info] 正在檢查文件 /Users/luc/Documents/epfl/
       teaching/progfun/assignments/
       src/main/scala/example/Lists.scala... 沒問題!
[info] 處理 1 文件(s)
[info] 發現 0 錯誤(s)
[info] 發現 0 警告(s)
[info] 樣式得分: (百分之)100
[success] 總用時: 1 秒, 完成時刻 2012年8月10日 晚上 11:34:02
>

提交你的解答到 Coursera

sbt 的submit任務用於你提交做業的解答。它會將你的源代碼打包到一個.jar文件,而後上傳到Coursera的服務器。注意,只有代碼中沒有編譯錯誤時,代碼纔會被提交。code

submit任務接收兩個參數:你的電子郵件地址和提交密碼。注意:提交密碼不是你的登陸密碼。相反,它是由Coursera生成的特殊密碼。你能夠在Assignments頁中找到。

> submit e-mail@university.org suBmISsioNPasSwoRd
[info] 正在打包 /Users/luc/example/
       target/scala-2.10.1/
       progfun-example_2.10.1-1.0.0-sources.jar ...
[info] 打包完成。
[info] 編譯 1 個 Scala 源文件 到 /Users/luc/example/
       target/scala-2.10.1/classes...
[info] 正在鏈接到 coursera。獲取 challenge中...
[info] 計算 challenge 響應中...
[info] 提交做業中...
[success] 你的代碼被成功提交:你的提交已被接收,以後將會批改。
[success] 總用時: 6 秒, 完成時刻 2012年8月10日 下午 10:35:53
>

    建立於2012年8月11日(週六)北京時間 凌晨 1:13     修改於2013年3月22日(週五)北京時間 凌成 2:00

相關文章
相關標籤/搜索