3

如何定义“运行”和“测试:运行”任务以在分叉的 JVM 上使用 hprof 运行。

在 build.sbt

fork in run := true

javaOptions in run += "-agentlib:hprof"

此设置使两个运行任务都与 hprof 一起工作。

我想定义我的 hprof 任务以保持默认的“运行”和“测试:运行”任务并在 sbt 提示符下使用。

//define myHprofTask, alias default run task

fork in myHprofTask := true

javaOptions in myHprofTask += "-agentlib:hprof"

如何定义这样的任务?

4

1 回答 1

2

这是基于https://github.com/harrah/xsbt/wiki/Common-TasksAdditional run tasks的部分。

  1. 定义新的任务键:

    lazy val myHprofTask = TaskKey[Unit]("my-hprof-task")
    
  2. 使用执行的类路径在Compile配置(myHprofTask in Compile部分)中添加一个新的运行任务,将“arg1”和“arg2”作为参数传递:Compiledemo.Main

    fullRunTask(myHprofTask in Compile, Compile, "demo.Main", "arg1", "arg2")
    
  3. 对配置执行相同的Test操作:

    fullRunTask(myHprofTask in Test, Test, "demo.TestMain", "arg1", "arg2")
    
  4. 然后,您可以定义问题中的forkjavaOptions设置。

以下是使用快速配置样式 ( build.sbt) 的完整示例:

{
  lazy val myHprofTask = TaskKey[Unit]("my-hprof-task")
  seq(
    fullRunTask(myHprofTask in Compile, Compile, "demo.Main", "arg1"),
    fullRunTask(myHprofTask in Test, Test, "demo.TestMain", "arg1"),
    fork in myHprofTask := true,
    javaOptions in myHprofTask += "-agentlib:hprof"
  )
}
于 2011-08-15T15:07:11.020 回答