我是SBT
中新开发的任务,我正在试图找出如何创建一个集成现有代码的任务。
在我的代码中,我有一个单例对象,其run
方法需要多个参数
object MyObject {
def run( param1: String, param2: Int, param3: String, ...) = {}
}
我的问题是:如何定义SBT
中调用run
方法指定其build.sbt
文件中所有参数的build.sbt
方法中的任务?
我可以在lazy val myTask: TaskKey[Seq[File]] = taskKey[Seq[File]]("My task")
lazy val myTaskRun = (sourceManaged, dependencyClasspath in Compile, runner in Compile, streams) map { (dir, cp, r, s) =>
val param1 = ...
val param2 = ...
val param3 = ...
val paramN = ....
MyObject.run( param1, param2, param3, ...)
Seq(file("path"))
}
private void Form1_Load(object sender, EventArgs e)
{
SetValuesOnSubItems(this.menuStrip1.Items.OfType<ToolStripMenuItem>().ToList());
}
private void SetValuesOnSubItems(List<ToolStripMenuItem> items)
{
items.ForEach(item =>
{
var dropdown = (ToolStripDropDownMenu)item.DropDown;
if (dropdown != null)
{
dropdown.ShowImageMargin = false;
SetValuesOnSubItems(item.DropDownItems.OfType<ToolStripMenuItem>().ToList());
}
});
}
答案 0 :(得分:1)
<强> 1。您可以使用fullRunInputTask
。
在你的build.sbt
中lazy val example = InputKey[Unit]("example", "Run something.")
fullRunInputTask( example, Compile, "somefun.CallMe")
在src/main/scala/somefun/CallMe.scala
下
package somefun
object CallMe {
def main(args: Array[String]) : Unit = {
println("Params are: " + args.mkString(", "))
}
}
要使用example
来呼叫您的任务,例如&#34;示例1 2 3&#34;
<强> 2。您可以创建自己的InputTask
创建自定义InputTask
允许灵活的输入解析器(在选项卡上有建议),允许链接其他任务。它简单地集成到SBT中。