2016-03-22 21 views
0

使用下面的示例SBT构建文件,我可以从SBT交互模式中将参数传递给我的InputTask,但不是没有。有没有办法?如何在不进入sbt交互模式的情况下将参数传递给InputTask?

样品build.sbt:

import complete.DefaultParsers._ 

lazy val sampleDoSomething = inputKey[Unit]("Will print arguments.") 

lazy val commonSettings = Seq(
    organization := "com.example", 
    version := "0.1.0-SNAPSHOT" 
) 

lazy val taskInputTaskProject = (project in file(".")). 
    settings(commonSettings: _*). 
    settings(
    sampleDoSomething := { 
     println("Arguments: ") 
     val args = spaceDelimited("<arg>").parsed 
     args foreach println 
    } 
) 

从SBT交互模式中成功调用任务:

$ sbt 
[info] Set current project to taskInputTaskProject (in build file:/study/sbt/input-tasks/) 
> sampleDoSomething a b c 
Arguments: 
a 
b 
c 
[success] Total time: 0 s, completed Mar 22, 2016 1:06:58 PM 

成功调用命令行的任务不带参数:

$ sbt sampleDoSomething 
[info] Set current project to taskInputTaskProject (in build file:/study/sbt/input-tasks/) 
Arguments: 
[success] Total time: 0 s, completed Mar 22, 2016 1:06:18 PM 

失败使用参数从命令行调用任务:

$ sbt sampleDoSomething a b c 
[info] Set current project to taskInputTaskProject (in build file:/study/sbt/input-tasks/) 
Arguments: 
[success] Total time: 0 s, completed Mar 22, 2016 1:06:44 PM 
[error] Not a valid command: a 
[error] Expected 'all' 
[error] Not a valid project ID: a 
[error] Expected ':' (if selecting a configuration) 
[error] Not a valid key: a 
[error] a 
[error]^
+0

显然与此相关的问题:http://stackoverflow.com/questions/9352400/sbt-how-to-run-inputtask – joewyrembelski

回答

相关问题