Как указать несколько домов Java через конфигурацию sbt?
Я хочу протестировать один и тот же код с разными версиями JVM, используя плагин JMH и sbt-jmh. Чего я хотел бы добиться, так это иметь возможность запускать команду в оболочке sbt, например
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, но он по-прежнему использует Java, которая использовалась для запуска sbt вместо той, которая указана через
Corretto11 / javaHome
. Только указание
javaHome
без
Corretto11 /
работает как положено и работает
Jmh / run
использует правильную JVM для компиляции и запуска приложения. Я не хочу менять его вручную каждый раз, когда пытаюсь запустить тест. я тоже не хочу бегать
sbt -java-home ...
команда для каждого теста.