我想使用 JMH 和 sbt-jmh 插件用不同的 JVM 版本测试相同的代码。我想要实现的是能够在 sbt shell Corretto11 / Jmh / run
(或类似的东西)中运行一个命令,该命令将使用 Amazon Corretto 11 JVM(或任何其他定义的)进行我的 JMH 测试。
这是我到目前为止在我的 sbt 配置中的内容:
import pl.project13.scala.sbt.JmhPlugin.JmhKeys.Jmh
lazy val Corretto11 = config("corretto11") extend Jmh
lazy val Zulu11 = config("zulu11") extend Jmh
lazy val myProject = project
.enablePlugins(JmhPlugin)
.configs(Corretto11, Zulu11)
.settings(
scalaVersion := "2.13.7",
fork := true,
Corretto11 / javaHome := Some(file("path/to/corretto-11.0.14")),
Zulu11 / javaHome := Some(file("path/to/azul-11.0.14"))
)
这个配置允许我用来Corretto11 / run
运行 JMH 测试,但它仍然使用用于启动 sbt 的 Java,而不是通过Corretto11 / javaHome
. 仅指定javaHome
没有Corretto11 /
按预期工作和运行Jmh / run
使用正确的 JVM 来编译和运行应用程序。尽管每次尝试运行基准测试时,我都不想手动更改它。我也不想sbt -java-home ...
为每个基准测试运行命令。