SBT how to run InputTask

2020-07-11 07:43发布

I am creating some custom tasks in my SBT project and need to call other tasks for that.

How can i call inputTasks from inside my tasks and support them some input?

标签: scala sbt
1条回答
你好瞎i
2楼-- · 2020-07-11 08:25

Since you can factor your own tasks around this I'm assuming you're trying to use the run task. It took a bit of digging, but I've finally made it work; in a nutshell, this is what you do (assuming your task is named deployTask, tweak to match your needs):

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

This doesn't invoke the InputTask directly (I haven't found a way to do that yet), but it at least lets you run arbitrary Java code.

查看更多
登录 后发表回答