我正在使用sbt v0.13.5
在我的项目中,我想要一个可以接受一些输入(单个字符串)的sbt任务,对它做一些工作并吐出一些输出(再次,一个字符串)。我在我的项目中创建了一个帮助程序类,我可以通过sbt runMain
(sbt "runMain com.example.utils.ClassName someArgument"
)从终端调用它。
我想要的是为自己节省一些打字并且有一个sbt任务来执行此操作。我希望能够键入sbt doThing withStuff
并拥有一个名为doThing
的taskKey,它使用要运行的类的名称以及传入的参数来调用runMain
。
我知道如何创建任务,但我似乎无法弄清楚如何从build.sbt中的自定义任务定义中调用runMain
。有人能指出我正确的方向吗?
答案 0 :(得分:12)
TaskKey[Unit]("myTask") := (runMain in Compile).toTask(" com.example.Main arg1 arg2").value
runMain
是InputTask
。自{0.1}以来,InputTask
具有toTask
方法。
答案 1 :(得分:1)
如果有人想使用基于设置计算的参数运行主类,您需要dynamic tasks。例如:
val myRun = taskKey[Unit]("...")
myRun := Def.taskDyn {
val appName = name.value
Def.task {
(runMain in createApi in Compile)
.toTask(s" com.softwaremill.MyMain $appName")
.value
}
}.value