SBT支持两种使用方式:

    1. 批处理模式(batch mode)
    2. 可交互模式(interactive mode)

    批处理模式是指我们可以在命令行模式下直接依次执行多个SBT命令, 比如:

    1. $ sbt compile test package

    而可交互模式则直接运行sbt,后面不跟任何SBT命令,在这种情况下, 我们将直接进入sbt控制台(console), 在sbt控制台中,我们可以输入任何合法的sbt命令并获得相应的反馈:

    1. $ sbt
    2. > compile
    3. [success] Total time: 1 s, completed Sep 3, 2012 9:34:58 PM
    4. > test
    5. [info] No tests to run for test:test
    6. [success] Total time: 0 s, completed Sep 3, 2012 9:35:04 PM
    7. > package
    8. [info] Packaging XXX_XXX_2.9.2-0.1-SNAPSHOT.jar ...
    9. [info] Done packaging.
    10. [success] Total time: 0 s, completed Sep 3, 2012 9:35:08 PM

    TIPS 在可交互模式的sbt控制台下,可以输入help获取进一步的使用信息

    在以上实例中,我们依次执行了compile, test和package命令, 实际上, 这些命令之间是有依赖关系的,如果仅仅是为了package,那么,只需要执行package命令即可, package命令依赖的compile和test命令将先于package命令执行,以保证它们之间的依赖关系得以满足。
    除了compile,test和package命令, 下面列出了更多可用的sbt命令供读者参考:

    • compile
    • test-compile
    • run
    • test
    • package

    这些命令在某些情况下也可以结合SBT的触发执行(Trigger Execution)机制一起使用, 唯一需要做的就只是在相应的命令前追加~ 符号, 比如:

    1. sbt ~compile

    我更改了任何源代码并且保存之后,将直接触发SBT编译相应的源代码以及相应的依赖变更。 假如我们有2个显示器, 左边是命令行窗口,右边是编辑器或者IDE窗口,那么,我们只要在右边的显示器中编辑源代码,左边的显示器就可以实时的反馈编译结果

    • ~ test会在代码变更时自动运行单元测试,适合于测试驱动开发(TDD)的场景
    • ~compile会在代码变更时重新编译项目,适用于没有IDE支持的情况
    • 也可以一次触发多个任务,~ ;clean ;test

    NOTE 原则上, ~和相应命令之间应该用空格分隔,不过对于一般的命令来讲,直接前缀~也是可以的,就跟我们使用~compile的方式一样。