2012-02-19 37 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