2014-02-09 5 views
7

설정의 값을 얻고 (예 : name) fullRunTask의 인수로 전달하려면 어떻게해야합니까? fullRunTask의 구현을 이해할 수 없습니다. 예를 들어fullRunTask에서 인수로 sbt 설정을 전달하십시오.

:이 상황에서 name.value을 참조 할 수 없기 때문에

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

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

이 작동하지 않습니다.

+0

달성하고자하는 것은 무엇입니까? 나는 그 질문을 이해하지 못한다. 실행할 수 있기를 원하는 코드를 보여줄 수 있습니까?하지만 SBT에 대한 지식이 있으면 불가능합니다. –

+0

@JacekLaskowski 위의 편집을 참조하십시오. – tpolecat

+0

'fullRunTask'에 무엇이 필요합니까? –

답변

12

좋아, 조쉬 수 에르에게서 도움을 받았어. 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)) 
} 
+0

그것을 달성하는 유일한 방법은 '값'으로 값에 액세스 할 수있는 사용자 정의 태스크를 사용하는 것입니다. 나는이 제안으로 답변했지만, 내가 늦었을 것임을 알았다. :) –

+2

또한 "import sbt.Attributed.data"가져 오기를 추가하여 범위에 "데이터"를 가져와야합니다. –

관련 문제