sbt筆記二 Running

交互模式

例如咱們要編譯項目,操做以下:
$ sbt
> compile
上箭頭按鍵能夠選擇前一條命令。
運行程序用run命令。
離開交互模式,用exit命令或Ctrl+D。

批量模式

例如咱們順序執行幾個命令:
$ sbt clean compile "test-only TestA TestB"
(clean,compile,最後test-only)

其中test-only有兩個參數,TestA和TestB,把他們做爲一個總體,須要用雙引號包起來。 java

自動編譯

若是咱們想在文件改變的時候自動編譯(就像eclipse那樣),運行:
~ compile
sbt會先執行一次編譯,並進入阻塞狀態。修改scala文件並保存,sbt就會自動從新編譯這個文件。在控制檯輸入回車能夠回到交互模式。
~前綴也能夠用在批量模式下,但下面的命令貌似不太好用:
sbt ~ compile run
E:\study\study-sbt\hello-sbt>sbt ~ compile run
[info] Loading project definition from E:\study\study-sbt\hello-sbt\project
[info] Set current project to hello-sbt (in build file:/E:/study/study-sbt/hello
-sbt/)
1. Waiting for source changes... (press enter to interrupt)
2. Waiting for source changes... (press enter to interrupt)
3. Waiting for source changes... (press enter to interrupt)

[info] Updating {file:/E:/study/study-sbt/hello-sbt/}default-dea105...
[info] Resolving org.scala-lang#scala-library;2.10.0 ...
[info] Done updating.
[info] Compiling 1 Scala source to E:\study\study-sbt\hello-sbt\target\scala-2.1
0\classes...
[success] Total time: 4 s, completed 2013-1-23 12:01:17
[info] Running Hello
Hello sbt!12
[success] Total time: 0 s, completed 2013-1-23 12:01:17

可見只有最後一次的更改生效了。。。 shell

經常使用命令

clean      刪除全部在target目錄中生成的文件
compile  編譯main源碼(src/main/scala和src/main/java)
test        編譯和運行全部測試程序
console  啓動scala解釋器,它的classpath中包含已編譯的源碼和全部依賴。輸入":quit"(沒有引號)或Ctrl+D能夠返回sbt
run <argument>* 在當前JVM中運行Main Class。
package 打jar包,jar裏包括src/main/resources裏的文件,以及從src/main/scala和src/main/java編譯的class文件。
help <command> 顯示指定命令的詳細幫助信息。直接輸入help顯示命令列表。

reload  從新加載配置(build.sbt, project/*.scala, project/*.sbt)。修改構建文件後須要重載才能生效。 eclipse

自動完成

在交互模式下,輸入命令的前幾個字符,按Tab鍵能夠自動完成,若是有多個可能的結果,也會列出來。多按幾回Tab會有驚喜!

在空命令提示符下直接輸入tab能夠查看全部命令。 測試

歷史命令(History Commands)

交互模式下會記錄操做歷史,即便退出或重啓了sbt。上箭頭按鍵能夠查看上一條執行的命令。
!    至關於help,不過顯示的是歷史命令
!!   從新執行上一條命令
!:   顯示以前執行過的全部命令(顯示的內容包含這條命令自身)
!:n  顯示最近執行的n條命令(顯示的內容包含這條命令自身)
!n   執行索引爲n的命令。索引能夠在!:的結果中看到。
!-n  執行這條命令以前的第n條命令
!string 執行最近一條以'string'開頭的命令
!?string 執行最近一條包含'string'的命令

(最後兩個感受沒什麼用) ui

!-n例子
> clean
[success] Total time: 0 s, completed 2013-1-23 13:55:19
> !:5
   40  !:
   41  clean
   42  !:
   43  clean
   44  !:5
> !-2
clean
[success] Total time: 0 s, completed 2013-1-23 13:55:30
!string例子
> !:10
   44  !:5
   45  clean
   46  compile
   47  !:10
   48  clean
   49  !:
   50  clean
   51  !:
   52  !:5
   53  !:10
> !c
clean
[success] Total time: 0 s, completed 2013-1-23 13:58:45
> !co
compile
...
相關文章
相關標籤/搜索