2012-02-19 23 views
6

Estoy creando algunas tareas personalizadas en mi proyecto SBT y necesito llamar a otras tareas para eso.SBT cómo ejecutar InputTask

¿Cómo puedo llamar a inputTasks desde dentro de mis tareas y darles soporte para algunas entradas?

Respuesta

5

Dado que puede factorizar sus propias tareas al respecto, supongo que está tratando de utilizar la tarea run. Me tomó un poco de investigación, pero finalmente lo hice funcionar; en pocas palabras, esto es lo que hay que hacer (suponiendo que su tarea se denomina deployTask, ajustar para que coincida con sus necesidades):

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) 
    } 

Esto no invoca la InputTask directamente (no he encontrado una manera de hacer eso todavía), pero al menos le permite ejecutar código Java arbitrario.

+0

Esto fue de gran ayuda. He estado buscando durante unas horas, tratando de averiguar cómo ejecutar un 'InputTask' directamente. Mencionaste que no habías descubierto cómo * todavía * ... hace varios meses, ¿hay alguna posibilidad de que lo hayas descifrado desde entonces? – Dylan

+0

Lo siento, no. Para ser sincero, hemos cambiado a Maven: no es tan elegante, pero es mucho más fácil poner en marcha al equipo. –