可以简单的将build.sbt文件理解为Maven项目的pom.xml文件,它是build定义文件。 SBT运行使用两种形式的build定义文件,一种就是放在项目的根目录下,即build.sbt, 是一种简化形式的build定义; 另一种放在project目录下,采用纯Scala语言编写,形式更加复杂,当然,也更完备,更有表现力。
    我们暂时先介绍build.sbt的定义格式,基于scala的build定义格式我们稍后再细说。

    一个简单的build.sbt文件内容如下:

    1. name := "hello" // 项目名称
    2. organization := "xxx.xxx.xxx" // 组织名称
    3. version := "0.0.1-SNAPSHOT" // 版本号
    4. scalaVersion := "2.9.2" // 使用的Scala版本号
    5. // 其它build定义

    其中, name和version的定义是必须的,因为如果想生成jar包的话,这两个属性的值将作为jar包名称的一部分。
    build.sbt的内容其实很好理解,可以简单理解为一行代表一个键值对(Key-Value Pair),各行之间以空行相分割。
    当然,实际情况要比这复杂,需要理解SBT的Settings引擎才可以完全领会, 以上原则只是为了便于读者理解build.sbt的内容。
    除了定义以上项目相关信息,我们还可以在build.sbt中添加项目依赖:

    // 添加源代码编译或者运行期间使用的依赖
    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")
    

    甚至于直接使用ivy的xml定义格式:

    ivyXML :=
      <dependencies>
        <dependency org="org.eclipse.jetty.orbit" name="javax.servlet" rev="3.0.0.v201112011016">
            <artifact name="javax.servlet" type="orbit" ext="jar"/>
        </dependency>
        <exclude module="junit"/>
        <exclude module="activation"/>
        <exclude module="jmxri"/>
        <exclude module="jmxtools"/>
        <exclude module="jms"/>
        <exclude module="mail"/>
      </dependencies>
    

    在这里,我们排除了某些不必要的依赖,并且声明了某个定制过的依赖声明。
    当然, build.sbt文件中还可以定义很多东西,比如添加插件,声明额外的repository,声明各种编译参数等等