【问题标题】:Running SBT from an ammonite script从 ammonite 脚本运行 SBT
【发布时间】:2017-10-18 18:26:31
【问题描述】:

我正在尝试编写一个触发 SBT 任务的 ammonite 脚本。

到目前为止,这就是我所写的。

test.sh

#!/usr/bin/env amm
import sys.process._
import java.io.File
import ammonite.ops._, ImplicitWd._

@main
def ini(args: String*) = {
    val server = args.headOption.getOrElse("devserver")
    val path = /'Users/'Foo/'IdeaProjects/'my-project
    val process = Process(Seq("sbt", "clean"), path)
    process.!
}

我在这里遇到了多个问题

  1. 我想使用 ammnoite % 来启动进程,而不是使用 Process 对象。但是如何设置正在启动的进程的工作目录?

  2. 我从命令行运行我的代码,如sbt "runmain com.test.Foo 1 2 3"。从% 调用进程时,如何正确调用带有所有参数的runMain?

【问题讨论】:

    标签: scala ammonite


    【解决方案1】:

    这样做:

    %.sbt('runmain,"com.test.foo",arg1,arg2,arg3)(path)

    其中 path 是您希望在其中执行它的目录,并且 args 是明确命名的,而不是 arg*。它是 Scala,因此您可以为艺术预设值,并且您可以通过在名称前面加上 w/--' 来使用命名参数

    另一种方法是编写一个 shell 脚本,首先 cd 到该目录,然后运行带有参数的 ammonite 脚本。

    【讨论】:

      猜你喜欢
      • 2017-03-04
      • 2019-12-07
      • 2015-12-06
      • 2017-08-24
      • 1970-01-01
      • 2020-06-18
      • 2016-09-01
      • 1970-01-01
      • 2017-02-10
      相关资源
      最近更新 更多