SBT 命令执行过程

/ 默认分类 / 没有评论 / 336浏览

在sbt--and-plugins包下,有一个command jar包(如command_2.12-1.1.4.jar), 该jar包下有一个sbt package,包含一个MainLoop的Scala文件,定义了一个MainLoop的object,包含一个processCommand方法。

def processCommand(exec: Exec, state: State): State

MainLoop中的next方法

def next(state: State): State

调用State的process方法,使用processCommand执行state中的currentCommand

MainLoop中的run方法

@tailrec def run(state: State): RunNext

递归所有命令的执行,如果State.next 是State.Continue,表示可以继续,调用next(state)执行下一条命令

reload命令

loadp: loadProject