如何定义“run”和“test:run”任务以在 fork 的 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"
如何定义这样的任务?
最佳答案
这基于 https://github.com/harrah/xsbt/wiki/Common-Tasks 的 Additional run tasks
部分.
定义新的任务键:
lazy val myHprofTask = TaskKey[Unit]("my-hprof-task")
使用执行
Compile
的类路径在Compile
配置(myHprofTask in Compile
部分)中添加一个新的运行任务demo.Main
,将“arg1”和“arg2”作为参数传递:fullRunTask(myHprofTask in Compile, Compile, "demo.Main", "arg1", "arg2")
对
测试
配置做同样的事情:fullRunTask(myHprofTask in Test, Test, "demo.TestMain", "arg1", "arg2")
然后,您可以按照问题定义
fork
和javaOptions
设置。
这里是使用快速配置样式 (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"
)
}
关于scala - 如何从 sbt 0.10 定义任务以使用 hprof 运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6951261/