2016-03-22 52 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

回答

相關問題