0
我想定義它運行在那裏的任務是定義在同一模塊中定義MyMainClass一個任務,任務的命令行傳遞給它:在命令行參數中使用runTask(... mainClass ...)在inputTask中,:= vs << = or?
$ 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()。用taskKey解析給我編譯錯誤明確說明我必須使用inputKey;試圖使用< < = with 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文件提及< < =根本沒有。