2014-04-30 69 views
2

我正在編寫一個應該調用另一個命令(來自Eclipse SBT插件的eclipse)和另一個InputTask的SBT Command調用另一個命令和InputTask的SBT命令

怎樣才能做到這一點?

+0

官方SBT文檔中的命令覆蓋範圍非常薄。 _SBT在Action_中的第10章「使用命令自動化工作流程」更具信息量。 –

回答

2

假設你想創建一個「釋放」命令,它需要調用一個名爲「包」了一個任務,你可以添加以下代碼build.sbt:

commands += Command.command("release")((state:State) => { 
    Project.evaluateTask(pack, state) 
    println("release called") 
    state 
}) 

更新時間:

此外,如果你要創建的「釋放」命令,它需要調用一個名爲「init_compile」另一個命令,然後將下面的示例代碼可用於:

commands += Command.command("init_compile")((state:State) => { 
    println("init_compile called.") 
    state 
}) 

commands += Command.command("release")((state:State) => { 
    val newState = Command.process("init_compile",state) 
    println("release called.") 
    newState 
}) 
+0

這不會通過類型檢查器。 'evaluateTask'接受一個'ScopedKey [Task [T]]',我需要執行一個'Command'。 – vjovanov

+0

我更新了答案,希望它能解決您的問題。通過調用[Command.process(「command_name」,state)](https://github.com/sbt/sbt/blob/0.13/main/command/src/main/scala/)調用另一個命令的命令SBT/Command.scala#L88)。 –