【发布时间】:2016-02-09 04:56:58
【问题描述】:
我想定义一个任务,它运行在定义任务的同一模块中定义的 MyMainClass,将任务命令行传递给它:
$ sbt
> project myModule
> myKey2 someArgument
...compiles MyMainClass
...runs MyMainClass.main("someArgument")
没有命令行参数,这有效:
val myKey1 = taskKey[Unit]("myKey1")
lazy val myModule = project.settings(
myKey1 <<= runTask(Compile, "MyMainClass", "mode1"),
myKey1 <<= myKey1.dependsOn(compile in Compile)
)
但我无法使用命令行参数。尝试将 Def.spaceDelimited().parsed 与 taskKey 一起使用会给我编译错误,明确指出我必须改用 inputKey;尝试将
val myKey2 = inputKey[Unit]("myKey2")
lazy val myModule = project.settings(
...
myKey2 := runTask(
Compile, "MyMainClass", "mode2",
{
val args = Def.spaceDelimited().parsed.head)
// This line is executed, but MyMainClass.main() is not:
System.err.println("***** args=" + args)
args.head
}
),
myKey2 <<= myKey2.dependsOn(compile in Compile)
)
尝试了 SBT 0.13.7 和 0.13.9。请帮忙。谢谢。 :)
UPD。或者,也许我这样做完全错误(已弃用)的方式?我找不到 SBT 0.13 文档提到
【问题讨论】:
标签: sbt