我有一项任务是从我的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) {
我检查了新文档并且没有找到答案,我该如何迁移?
答案 0 :(得分:2)
我想你的意思是来自sys.process
的{{3}}运算符:
如果前一个命令以退出值0结束,则
#&&
有条件地执行第二个命令。它反映了shell&&
。
sbt 0.13的API类似于sys.process
,而1.0 sys.process
取代了它。因此修复只是导入它以向范围添加相关含义:
import scala.sys.process._