1. 程式人生 > >使用SBT構建Scala專案

使用SBT構建Scala專案

標籤:

既然決定要在Scala上下功夫,那就要下的徹底。我們入鄉隨俗,學一下SBT。sbt使用ivy作為庫管理工具。ivy預設把library repository建在user home下面。

安裝SBT

在SBT的官網(http://www.scala-sbt.org/)下載相應版本的SBT。

技術分享

Windows環境下建議配置SBT的環境變數。(windows上搞開發真是越發蛋疼。)具體步驟不說了,就是把sbt/bin目錄配置進PATH。

技術分享

技術分享

在sbt/bin下有個sbt.bat,檢視該bat檔案。可以瞭解到該檔案依賴於conf/sbtconfig.txt。

在conf/sbtconfig.txt中新增:

-Dfile.encoding=UTF8

-Dsbt.boot.directory=d:/sbt-repository/boot/

-Dsbt.ivy.home=d:/sbt-repository/

說明:

-Dsbt.boot.directory

-Dsbt.ivy.home

這兩個是配置sbt.boot目錄和ivy.home目錄,用於快取的jar包等資訊存放位置。預設情況下jar包等資訊存放於user home目錄。

另外執行sbt的一下JVM引數也可以在sbtconfig.txt中指定。

SBT命令列環境

在命令列中進入工程目錄,輸入sbt,進入sbt的命令列。(這裡建議進入工程目錄再執行sbt命令。)

技術分享

注意:第一次使用sbt命令,程式會去下載所需要的jar包。整個過程需要很長時間,要耐心等待。當視窗中出現">"提示符,則說明sbt已經成功啟動。下載完成後,顯示如下圖:

技術分享

sbt命令

幫助命令 help

技術分享

檢視命令的詳細幫助文件

技術分享

技術分享

顯示專案配置 show

show name :檢視當前專案的名字。

show libraryDependencies :檢視當前專案依賴的庫。

使用Scala控制檯 console

輸入console回車,會在當前會話內啟動一個REPL。sbt會載入當前專案依賴的全部jar包和當前的程式碼。即可以在這個直譯器裡實驗你的半成品。

因為依賴的jar包也都被載入了,所以對於那些你可能還不熟悉的第三方庫,你有可以在console裡玩個痛快!

執行Scala程式 run

若專案有個物件帶有方法(或者物件繼承了 App 品質(trait)),那麼可以通過輸入 run 在 sbt 中執行程式碼。

在 sbt 發現有多個 main 方法時,它會詢問你想執行哪一個。

使用SBT構建專案

在專案目錄下建立project目錄。

技術分享

hello-sbt是專案目錄。project是其子目錄。

在project目錄中建立build.properties檔案。在檔案中寫入使用sbt的版本。若本機沒有相應的版本,sbt會自動下載需要的版本。(本機使用當前最新sbt版本0.13.9)

技術分享

在專案目錄下,建立build.sbt,填入相應的專案配置

技術分享

接著在命令列中,進入當前工程,使用sbt命令,當看見尖括號提示符,即表示建立成功。(注:第一次使用sbt需要等待很長時間去下載相應檔案。)

技術分享

將sbt專案匯入到Eclipse

在eclipse中使用sbt相應的配置檔案,需要安裝sbteclipse外掛,sbteclipse外掛會依據sbt的配置生成eclipse專案需要的檔案。

在工程目錄的project目錄下建立plugins.sbt,其中新增外掛內容。

技術分享

執行reload命令

技術分享

接著直接執行eclipse命令,即可生成eclipse專案檔案。

在eclipse中匯入工程即可:

技術分享

如果沒有建立src目錄,手動建立如下目錄,然後在重新執行eclipse命令即可。

src/main/scala

src/main/java

src/main/resources

src/test/scala

src/test/scala

src/test/resources

專案匯入到Eclipse中顯示如下:

技術分享

若發現src目錄下沒有resources可以嘗試手動建立,也可以在build.sbt中新增如下配置。

EclipseKeys.createSrc := EclipseCreateSrc.Default + EclipseCreateSrc.Resource

總之很簡單。

SBT與Scala程式

編寫HelloSBT程式。

在src/main/scala中寫入HelloSBT程式,生成的eclipse專案如下:

技術分享

使用sbt編譯程式

在sbt命令列下輸入compile

技術分享

使用sbt執行程式

在sbt命令列下輸入run

技術分享

將sbt專案匯入到Inetllj IDEA

工程匯入Inetllj IDEA,需要選擇build.sbt檔案,而不是專案檔案。Inetllj IDEA會顯示對話方塊。

技術分享

注意有一些高階選項,可以設定一下。