命令
命令(command)是 sbt 的系统级构建块,常用于捕获用户交互或 IDE 交互。
我们可以将每个命令视为 State => State 函数。在 sbt 中,状态表示以下内容:
- 构建结构(
build.sbt等) - 您的磁盘(源代码、JAR 输出等)
因此,命令通常会修改构建结构或磁盘。例如,set 命令可以应用设置来修改构建结构:
> set name := "foo"
act 命令可以将 compile 等任务提升为命令:
> compile
编译会从磁盘读取并写入输出,或在屏幕上显示错误信息。
命令按顺序处理
由于只有一个状态,命令的特点是它们一次执行一个。
此规则有一些例外,但通常命令按顺序运行。一个有用的比喻是,命令类似于咖啡馆收银员接单,会按接收顺序处理。
任务并行运行
如上所述,act 命令将任务转换为命令级别。在此过程中,act 命令会将任务广播到聚合的子项目,并并行运行独立任务。
同样,在会话启动期间运行的 reload 命令将并行初始化设置。
sbt server 的角色
sbt server 是一项服务,可接受来自命令行或名为 Build Server Protocol 的网络 API 的命令。此机制使构建用户和 IDE 能够共享同一 sbt 会话。