Sbt任务只评估一次

时间:2018-05-30 06:49:03

标签: scala sbt

def updateSnap = Command.command("updateSnap") { state =>
  import scala.concurrent.duration._
  val extracted = Project.extract(state)
  import extracted._
  runTask(
    update,
    appendWithSession(Seq(coursierTtl := None), state)
  )
  state
}

我定义了一个使用update

运行coursierTtl := None的命令

它第一次运行正常(每次sbt发布)。

但是当我重新运行这个命令时,它只是outout

[xxx] $ updateSnap
[info] Set current project to xxx (in build file:/home/xxx/xxx)

似乎缓存了任务,我该如何解决?

1 个答案:

答案 0 :(得分:0)

我可以使用SBT 1.1.1和Coursier 1.0.3在我的机器上确认相同的行为。一个选项是在clean之前update

def updateSnap = Command.command("updateSnap") { state =>
  import scala.concurrent.duration._
  val extracted = Project.extract(state)
  import extracted._
  runTask(clean, state)
  runTask(
    update,
    appendWithSession(Seq(coursierTtl := Some(0.seconds)), state)
  )
  state
}

这会导致重新获取SNAPSHOT个工件。