通常当sbt启动或“reload”被调用时,sbt将发出消息“[info]从......加载项目定义”并编译&如有必要,请加载build.sbt。
我的问题是:有没有办法在使用代码的插件中实现相同的东西或等效的东西?在Keys.scala中似乎没有一个名为reload的任务,所以我想知道sbt是如何做到的。感谢。
更新:我本来想要做的是我想要一个构建清理任务,清除项目/目标并重新加载sbt,迫使它重新编译构建配置。
答案 0 :(得分:2)
来自https://github.com/sbt/sbt/blob/0.13.9/main/src/main/scala/sbt/Main.scala:
def doLoadProject(s0: State, action: LoadAction.Value): State =
{
val (s1, base) = Project.loadAction(SessionVar.clear(s0), action)
IO.createDirectory(base)
val s = if (s1 has Keys.stateCompilerCache) s1 else registerCompilerCache(s1)
val (eval, structure) = Load.defaultLoad(s, base, s.log, Project.inPluginProject(s), Project.extraBuilds(s))
val session = Load.initialSession(structure, eval, s0)
SessionSettings.checkSession(session, s)
Project.setProject(session, structure, s)
}