如何让sbt-release插件在发布之前自动清理?

时间:2012-10-31 23:32:48

标签: sbt

我尝试了一些方法,例如addCommandAlias("release", ";clean ;release"),以及类似的方法:

ReleaseKeys.releaseProcess ~= {
   (seq: Seq[ReleaseStep]) =>
    cleanStep +: seq
}

cleanStep就像:

lazy val cleanStep = ReleaseStep(
    action = st => Project.extract(st).runTask(clean, st)._1
)

lazy val cleanStep = ReleaseStep(
    action = st => Project.extract(st).runAggregated(clean, st)
)

基本上,这些方法都不起作用。 runTask适用于简单的built.sbt构建,但似乎不适用于多模块构建。

有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

这最终起作用了。我真的不明白runAggregated应该做什么;我本以为会做到这一点。但无论如何这有点直观;建议仍然受到赞赏,因为我觉得我错过了什么。

  lazy val cleanStep = ReleaseStep(
    action = st => {
      implicit val display = Project.showContextKey(st)
      val session = Project.session(st)
      val structure = Project.structure(st)
      (structure.allProjectRefs foldLeft st) {
        case (s: State, p: ProjectRef) =>
          Extracted(structure, session, p).runTask(clean, s)._1
      }
    }
  )