将sbt设置作为fullRunTask中的参数传递

tpo*_*cat 7 sbt

如何获取设置的值(比方说name)并将其作为参数传递给fullRunTask?我不明白执行情况fullRunTask.

例如:

lazy val foo = TaskKey[Unit]("foo")

fullRunTask(foo, Compile, "foo.Foo", name.value)

不起作用,因为我无法name.value在此上下文中引用.

tpo*_*cat 12

好的,我得到了Josh Suereth的帮助.这样做fullRunTask有点复杂,但它所做的额外工作(添加runner in myTask)确实不是必需的.内联机构runTask完成了我所需要的工作.

lazy val myTask = taskKey[Unit]("my custom run task")

myTask := {
  val r = (runner in Compile).value
  val input = name.value // or any other string setting(s)
  val cp = (fullClasspath in Compile).value
  toError(r.run("my.MainClass", data(cp), Seq(input), streams.value.log))
}
Run Code Online (Sandbox Code Playgroud)

  • 此外,您需要添加"import sbt.Attributed.data"导入以在范围内引入"数据". (2认同)