SBT支持两种使用方式:
- 批处理模式(batch mode)
- 可交互模式(interactive mode)
批处理模式是指我们可以在命令行模式下直接依次执行多个SBT命令, 比如:
$ sbt compile test package
而可交互模式则直接运行sbt,后面不跟任何SBT命令,在这种情况下, 我们将直接进入sbt控制台(console), 在sbt控制台中,我们可以输入任何合法的sbt命令并获得相应的反馈:
$ sbt
> compile
[success] Total time: 1 s, completed Sep 3, 2012 9:34:58 PM
> test
[info] No tests to run for test:test
[success] Total time: 0 s, completed Sep 3, 2012 9:35:04 PM
> package
[info] Packaging XXX_XXX_2.9.2-0.1-SNAPSHOT.jar ...
[info] Done packaging.
[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)机制一起使用, 唯一需要做的就只是在相应的命令前追加~ 符号, 比如:
sbt ~compile
我更改了任何源代码并且保存之后,将直接触发SBT编译相应的源代码以及相应的依赖变更。 假如我们有2个显示器, 左边是命令行窗口,右边是编辑器或者IDE窗口,那么,我们只要在右边的显示器中编辑源代码,左边的显示器就可以实时的反馈编译结果
- ~ test会在代码变更时自动运行单元测试,适合于测试驱动开发(TDD)的场景
- ~compile会在代码变更时重新编译项目,适用于没有IDE支持的情况
- 也可以一次触发多个任务,~ ;clean ;test
NOTE 原则上, ~和相应命令之间应该用空格分隔,不过对于一般的命令来讲,直接前缀~也是可以的,就跟我们使用~compile的方式一样。