有没有办法在sbt中以编程方式调用“reload”?

时间:2015-10-21 06:49:12

标签: sbt

通常当sbt启动或“reload”被调用时,sbt将发出消息“[info]从......加载项目定义”并编译&如有必要,请加载build.sbt。

我的问题是:有没有办法在使用代码的插件中实现相同的东西或等效的东西?在Keys.scala中似乎没有一个名为reload的任务,所以我想知道sbt是如何做到的。感谢。

更新:我本来想要做的是我想要一个构建清理任务,清除项目/目标并重新加载sbt,迫使它重新编译构建配置。

1 个答案:

答案 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)
}