2012-02-19 65 views
6

我在我的SBT項目中創建了一些自定義任務,需要爲此調用其他任務。SBT如何運行InputTask

如何從我的任務中調用inputTasks並支持它們的一些輸入?

回答

5

既然你可以把你自己的任務考慮在內,我假設你正在嘗試使用run任務。它需要一點挖掘,但我終於做到了。概括地說,這是你做了什麼(假設你的任務被命名爲deployTask,調整,以滿足您的需要):

deployTask <<= (fullClasspath in Compile, runner) map { (classpath, runner) => 
     val logger = ConsoleLogger() // Not sure this is optimal 
     Run.executeTrapExit({ 
      Run.run("com.sample.MainClass", 
        classpath map { _.data }, 
        Seq("option1", "option2", "..."), // <-- Options go here 
        logger)(runner) 
     }, logger) 
    } 

這並不直接調用InputTask(我還沒有找到一種方法來做到這一點),但它至少可以讓你運行任意的Java代碼。

+0

這是一個很大的幫助。我一直在尋找幾個小時,試圖找出如何直接運行'InputTask'。你提到你幾個月前還沒有發現*還有多少... - 從那以後你有什麼機會想到它? – Dylan 2012-10-16 19:40:39

+0

對不起,沒有。說實話,我們已經切換到了Maven--它並不優雅,但讓團隊合作並運行起來要容易得多。 – 2012-10-21 13:17:43