sbt介紹與構建Scala項目


一、sbt簡介

     sbt是類似ANT、MAVEN的構建工具,全稱為Simple build tool,是Scala事實上的標准構建工具。

    主要特性:

  1. 原生支持編譯Scala代碼和與諸多Scala測試框架進行交互;
  2. 使用Scala編寫的DSL(領域特定語言)構建描述
  3. 使用Ivy作為庫管理工具
  4. 持續編譯、測試和部署
  5. 整合scala解釋器快速迭代和調試
  6. 支持Java與Scala混合的項目

二、sbt安裝

在sbt官網下載,這里我是下載的sbt-0.13.11.zip,下載后加壓到自己定義的文件夾,然后將解壓目錄的bin目錄加入PATH環境

Linux環境,使用`sudo vim /etc/profile`打開配置文件,添加下面的命令

export SBT_HOME=/opt/sbt
export path=path:$SBT_HOME/bin

Windows環境,打開高級系統設置,在環境變量中添加系統變量

SBT_HOME  =>   D:\sbt

並加入path路徑,

path=> path;%SBT_HOME%\bin

安裝完成后,檢驗是否安裝成功。

使用sbt命令,該命令會執行一段時間,下載jar包,加載插件,最后查看是否進行交互界面,如下圖所示

C:\Users\test>sbt
[info] Loading global plugins from C:\Users\test\.sbt\0.13\plugins
[info] Set current project to test(in build file:/C:/Users/test/)
>

sbt的簡單配置

配置ivy目錄

可以對sbt進行配置,能夠配置ivy的文件目錄,ivy是sbt的默認管理項目依賴工具,它默認是在user home下建立library repository,但用戶可以配置ivy的library local repository。

修改sbt配置文件: [sbt安裝目錄]/conf/sbtconfig.txt,在配置文件中添加一行

-Dsbt.ivy.home=[你自己挑選的目錄]/repository

配置庫

感覺sbt運行時會從maven官網下載大量的jar包,可能會非常緩慢,可以添加國內的maven庫,從而能夠加快運行速度,在”~/.sbt”下創建repositories文件,添加下面的內容:

[repositories]
local                         # 本地ivy庫
maven-local: file://~/.m2/repository       # 本地Maven庫  osc: http://maven.oschina.net/content/groups/public/ #開源中國的maven庫,用於加快速度 typesafe: http://repo.typesafe.com/typesafe/ivy-releases/
, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly sonatype-oss-releases maven-central sonatype-oss-snapshots

配置插件

sbt有自己的插件,這里介紹能夠生成eclipse目錄的插件:sbteclipse插件https://github.com/typesafehub/sbteclipse

添加sbteclipse插件可以通過兩種方式添加:

  • 配置全局文件:~/.sbt/0.13/plugins/plugins.sbt
  • 配置項目文件: PROJECT_DIR/project/plugins.sbt

在其中一個文件添加一行

addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "4.0.0")

安裝sbteclipse插件后可以在sbt交互界面使用`eclipse`命令生成eclipse項目

三、sbt構建Scala項目

簡單構建Scala項目

創建文件SimpleProject/hw.scala

object Hi{
  def main(args: Array[String]) = println("Hello world!")
}

運行

D:\MyCode\Scala\SimpleProject>sbt
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0
[info] Loading global plugins from C:\Users\test\.sbt\0.13\plugins
[info] Set current project to hello (in build file:/D:/MyCode/Scala/SimpleProject/)
> run
[info] Updating {file:/D:/MyCode/Scala/SimpleProject/}root...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Compiling 1 Scala source to D:\MyCode\Scala\BuildProject\target\scala-2.10\classes...
[info] Running Hi
Hello world!
[success] Total time: 43 s, completed 2016-4-9 20:16:21

構建Scala完整項目

sbt項目目錄與Maven項目目錄類似,創建下面的目錄

├── src
│  ├── main
│  │  ├── java
│  │  ├── resources
│  │  └── scala
│  ├── test
│  │  ├── java
│  │  ├── resources
│  │  └── scala
├── build.sbt
├── project
│  ├── build.properties
│  ├── plugins.sbt

其中bulid.sbt為構建定義,project目錄是你的工程內另一個工程的項目,它知道如何構建你的工程,即project項目為元構建,相關文檔為http://www.scala-sbt.org/0.13/docs/zh-cn/Organizing-Build.html

簡單的bulid.sbt文件

name := "hello"      // 項目名稱

organization := "xxx.xxx.xxx"  // 組織名稱

version := "0.0.1"  // 版本號

scalaVersion := "2.10.6"   // 使用的Scala版本號

// 添加項目依賴
libraryDependencies += "ch.qos.logback" % "logback-core" % "1.0.0"

libraryDependencies += "ch.qos.logback" % "logback-classic" % "1.0.0"

// 或者

libraryDependencies ++= Seq(
                            "ch.qos.logback" % "logback-core" % "1.0.0",
                            "ch.qos.logback" % "logback-classic" % "1.0.0",
                            ...
                            )

// 添加測試代碼編譯或者運行期間使用的依賴
libraryDependencies ++= Seq("org.scalatest" %% "scalatest" % "1.8" % "test")

創建項目目錄並添加配置文件完成后,生成eclipse項目:在項目基目錄下運行下列命令

sbt eclipse

通過上面的命令能夠生成eclipse目錄,使用eclipse導入項目,即可開始開發。

四、sbt的交互模式

在項目目錄下運行sbt命令進行交互模式

sbt

在交互模式中能夠運行常見的命令,例如,進行compile:

>  compile

其它常見命令

clean 刪除所有生成的文件 (在 target 目錄下)。
compile 編譯源文件(在 src/main/scalasrc/main/java 目錄下)。
test 編譯和運行所有測試。
console 進入到一個包含所有編譯的文件和所有依賴的 classpath 的 Scala 解析器。輸入 :quit, Ctrl+D (Unix),或者 Ctrl+Z (Windows) 返回到 sbt。
run <參數>* 在和 sbt 所處的同一個虛擬機上執行項目的 main class。
package src/main/resources 下的文件和 src/main/scala 以及 src/main/java 中編譯出來的 class 文件打包成一個 jar 文件。
help <命令> 顯示指定的命令的詳細幫助信息。如果沒有指定命令,會顯示所有命令的簡介。
reload 重新加載構建定義(build.sbtproject/*.scalaproject/*.sbt 這些文件中定義的內容)。在修改了構建定義文件之后需要重新加載。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM