代码之家  ›  专栏  ›  技术社区  ›  cutoffurmind

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

  •  1
  • cutoffurmind  · 技术社区  · 6 年前

    我的任务是为我的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 回复  |  直到 6 年前
        1
  •  3
  •   laughedelic    6 年前

    我想你是指 #&& 操作员来自 sys.process :

    #&& 如果前一个命令以退出值0结束,则有条件执行第二个命令。它反映了壳牌的 &&

    sbt 0.13的API与 系统。过程 在1.0中 系统。过程 更换了它。因此,修复方法就是导入它,以便将相关的隐式添加到范围中:

    import scala.sys.process._