有人可以帮助我创建一个SBT任务,该任务可以从命令行支持类似属性的参数吗?
lazy val myTask = inputKey[Unit]("my task")
myTask := {
if (directoryOpt.isEmpty) // directoryOpt comes from an optional command line argument: directory="~/downloads"
fullRunInputTask(inputKey, Compile, "example.MyTaskClass")
else
fullRunInputTask(inputKey, Compile, "example.MyTaskClass", directoryOpt.get)
}
可以从命令行运行任务的地方,例如:
sbt myTask directory="~/downloads"
我确实在http://www.scala-sbt.org/0.13/docs/Input-Tasks.html上阅读了sbt文档。但这仅说明了如何创建sbt myTask option1 option2
不能完全满足我需要的任务解析器。
更新:我使用了jazmit的解决方案,因为这是一个简单的更改。效果很好!我还将尝试Mariusz的解决方案并在此处进行更新。
您可以使用环境属性来快速实现所需。
在命令行中,如下设置属性:
sbt myTask -Ddirectory="~/downloads"
从任务中,您可以按以下方式检索值:
val directory = System.getProperty("directory");
如果您想在语法检查,制表符完成等方面做得更扎实,可以定义输入任务,如此处所述。如果需要property = value语法,则可以使用解析器组合器库对此进行定义,例如:
import sbt.complete.DefaultParsers._
val myArgs: Parser[String] = "directory=" ~> StringEscapable
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句