命令

命令(command)是 sbt 的系统级构建块,常用于捕获用户交互或 IDE 交互。

我们可以将每个命令视为 State => State 函数。在 sbt 中,状态表示以下内容:

  1. 构建结构(build.sbt 等)
  2. 您的磁盘(源代码、JAR 输出等)

因此,命令通常会修改构建结构或磁盘。例如,set 命令可以应用设置来修改构建结构:

> set name := "foo"

act 命令可以将 compile 等任务提升为命令:

> compile

编译会从磁盘读取并写入输出,或在屏幕上显示错误信息。

命令按顺序处理

由于只有一个状态,命令的特点是它们一次执行一个。

command

此规则有一些例外,但通常命令按顺序运行。一个有用的比喻是,命令类似于咖啡馆收银员接单,会按接收顺序处理。

任务并行运行

如上所述,act 命令将任务转换为命令级别。在此过程中,act 命令会将任务广播到聚合的子项目,并并行运行独立任务。

同样,在会话启动期间运行的 reload 命令将并行初始化设置。

act

sbt server 的角色

sbt server 是一项服务,可接受来自命令行或名为 Build Server Protocol 的网络 API 的命令。此机制使构建用户和 IDE 能够共享同一 sbt 会话。