覆盖自定义SBT任务的fork设置

时间:2015-07-24 14:34:01

标签: scala sbt

我在SBT中实现了一个运行一些外部Java类的自定义任务。我使用runner任务来完成它。

myCustomTask := {
  val mainClass: String = ???
  val classpath: Seq[File] = ???
  val options: Seq[String] = ???
  runner.value.run(mainClass, classpath, options, streams.value.log)
}

我想配置此任务,以便它在单独的JVM中运行。通常,这是使用fork选项配置的,然后由runner任务引用。

我只想为我的自定义任务配置fork。我试过这样做:

fork in myCustomTask := true

但它不起作用。 runner任务仍然保持fork的未更改值。

我还尝试使用(runner in myCustomTask)而不仅仅是runner来调整任务本身,但这也无济于事。

如何仅为forktrue设为myCustomTask

2 个答案:

答案 0 :(得分:3)

我终于解决了这样的问题:

fork in myCustomTask := true,
myCustomTask := {
  val mainClass: String = ???
  val classpath: Seq[File] = ???
  val options: Seq[String] = ???
  val runner = initScoped(myCustomTask.scopedKey, Defaults.runnerInit).value
  runner.run(mainClass, classpath, options, streams.value.log)
}

答案 1 :(得分:1)

使用fullRunTask

中记录的select top 10 convert(varchar(30),o.name) AS table_name, row_count(db_id(), o.id) AS row_count, data_pages(db_id(), o.id, 0) AS pages, data_pages(db_id(), o.id, 0) * (@@maxpagesize/1024) AS kbs from sysobjects o where type = 'U' order by kbs DESC, table_name ASC