sbt筆記一 hello-sbt

一、創建sbt的目錄結構

sbt奉行「約定優於配置」的原則,而且沿襲了Maven的目錄結構

src/下的其餘文件夾,以及隱藏文件夾將被無視。

二、Say Hello to sbt

在src/main/scala/下建立一個scala應用程序 git

object Hello extends App {
	println("Hello sbt!")
}

在項目根目錄下打開一個控制檯(shift+右鍵 > 在此處打開命令窗口)
E:\study\hello-sbt>sbt
[info] Set current project to default-483fed (in build file:/E:/study/hello-sbt/
> run
[info] Updating {file:/E:/study/hello-sbt/}default-483fed...
[info] Resolving org.scala-lang#scala-library;2.9.2 ...
[info] Done updating.
[info] Compiling 1 Scala source to E:\study\hello-sbt\target\scala-2.9.2\classes
...
[info] Running Hello
Hello sbt!
[success] Total time: 9 s, completed 2013-1-22 16:07:37

三、建立sbt配置文件

此時,項目下沒有任何sbt配置文件,如下的設置都是默認的:
> name
[info] default-483fed
> version
[info] 0.1-SNAPSHOT
> scala-version
[info] 2.9.2
咱們在項目根目錄下建立build.sbt文件,內容以下:
name := "hello-sbt"
version := "1.0"
scalaVersion := "2.10.0"
(行之間的空行是必須的)
而後執行
> reload
...
> name
[info] hello-sbt
> version
[info] 1.0
> scala-version
[info] 2.10.0

O(∩_∩)O~,修改爲功。 shell

只有build.sbt在項目根目錄下,其餘的.sbt文件要放在$root/project/下。.scala構建文件也要放在project/下,和.sbt結合使用。另外,project/下的.sbt文件並不等價於項目根目錄下的.sbt。 工具

四、設置sbt版本

在hello-sbt/project/下建立build.properties文件,內容以下:
sbt.version=0.12.0
而後reload一下(我用的sbt版本爲0.12.2),結果以下:
> reload
[info] Loading project definition from E:\study\hello-sbt\project
[info] Updating {file:/E:/study/hello-sbt/project/}default-8c278e...
[info] Resolving org.scala-sbt#sbt;0.12.0 ...
.......
[info] Resolving org.scala-sbt#compiler-interface;0.12.0 ...
[info] Resolving org.scala-sbt#precompiled-2_8_2;0.12.0 ...
[info] Resolving org.scala-sbt#precompiled-2_10_0-m4;0.12.0 ...
[info] Done updating.
[info] Set current project to hello-sbt (in build file:/E:/study/hello-sbt/)

至於爲何要設置sbt版本,官方的解釋是:
sbt發行版之間的源碼是99%兼容的。儘管如此,設置sbt版本(在project/build.properties)能夠避免一些潛在的混亂。 ui

五、配置版本控制
不少人會把編譯出來的class,或者構建工具生成的東西提交到版本控制系統裏去。而後同步的時候就很痛苦,一堆沒用的東西。
在項目根目錄下建立一個.gitignore文件(或者其餘VCS的等價文件,之後補充),內容爲: spa

target/

ignore文件的寫法,參考特定的VCS系統。 scala


好吧,雖然在第二節咱們已經可以運行這個程序了,可是不能把項目導入到集成開發環境,也沒什麼意義吧,難道會有人用notepad++來開發一個項目嗎?下一篇先看這個。 版本控制

最後總結一下,這節出現的配置項有:

$root/build.sbt
	name
	version
	scalaVersion
(setting := "value")
必須以空行間隔

$root/project/build.properties
	sbt.version
(property = value)
相關文章
相關標籤/搜索