1

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

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

测试.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. 而不是使用Process我想使用 ammnoite%来启动该过程的对象。但是,如何为正在启动的进程设置工作目录?

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

4

1 回答 1

1

做这个:

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

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

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

于 2017-08-31T10:14:09.630 回答