scala - 如何从 sbt 0.10 定义任务以使用 hprof 运行

标签 scala settings sbt hprof

如何定义“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-TasksAdditional run tasks 部分.

  1. 定义新的任务键:

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

    fullRunTask(myHprofTask in Compile, Compile, "demo.Main", "arg1", "arg2")
    
  3. 测试配置做同样的事情:

    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"
  )
}

关于scala - 如何从 sbt 0.10 定义任务以使用 hprof 运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6951261/

相关文章:

scala - 基于scala中包的自动修复目录结构

scala - 评估职能绩效

scala - Akka 中的 I/O 是如何工作的?

regex - 如何为 Intellij 配置 Grep 控制台

java - SharedPreferences get 总是返回默认值而不是实际值

android - 使用自动模式时以编程方式更改亮度在 Android 中没有任何效果

scala - SBT 错误的编译顺序

添加为 sbt 依赖项时未找到 jboss 拦截器 api 1.1

scala - 对于 `case class Cc(a: Int, b: Int) extends MyTraitA` , `MyTraitA` 与 `Product` 和 `Serializable` 特征一起出现在哪里?

scala - Chisel 中的电源操作符