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

时间:2014-02-09 08:10:47

标签: sbt

如何获取设置的值(例如name)并将其作为参数传递给fullRunTask?我不理解fullRunTask的实现。

例如:

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

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

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

1 个答案:

答案 0 :(得分: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))
}