sbt 0.13.x使用shell任务迁移到1.1.4

时间:2018-04-26 19:59:45

标签: sbt migration

我有一项任务是从我的Play Framework应用程序中获取git的前端:

lazy val frontend = taskKey[Unit]("Downloads frontend")
frontend := {
  val s: TaskStreams = streams.value
  val shell: Seq[String] = if (sys.props("os.name").contains("Windows")) Seq("cmd", "/c") else Seq("bash", "-c")
  val downloadRepo: Seq[String] = shell :+ "git clone git@bitbucket.org:user/frontend.git"
  val rmJs: Seq[String] = shell :+    "rm -rf frontend/dist/js && rm -rf public/design && mkdir public/design"
  val copy: Seq[String] = shell :+    "mv frontend/dist/* public/design/"
  val rmRepo: Seq[String] = shell :+    "rm -rf frontend"
  s.log.info("Downloading frontend...")
  if((downloadRepo #&& rmJs #&& copy #&& rmRepo !) == 0) {
    s.log.success("frontend downloaded successful!")
  } else {
    throw new IllegalStateException("frontend failed!")
  }
}

它适用于sbt 0.13.x,但我想迁移到最新版本,它给了我一个错误:

error: value #&& is not a member of Seq[String]
  if((downloadRepo #&& rmJs #&& copy #&& rmRepo !) == 0) {

我检查了新文档并且没有找到答案,我该如何迁移?

1 个答案:

答案 0 :(得分:2)

我想你的意思是来自sys.process的{​​{3}}运算符:

  如果前一个命令以退出值0结束,则

#&&有条件地执行第二个命令。它反映了shell &&

sbt 0.13的API类似于sys.process,而1.0 sys.process取代了它。因此修复只是导入它以向范围添加相关含义:

import scala.sys.process._