sbt-native-packager在不同模块中定义多个mainClass

时间:2018-10-09 09:42:13

标签: scala sbt sbt-native-packager

我想打包多个docker映像,每个映像都有自己的mainClass,以确保应用程序在启动时运行。

lazy val `core` = project.in(file("core"))
  .enablePlugins(JavaServerAppPackaging, DockerPlugin)
  .settings{
    mainClass in Compile := Some("path/to/Core") // Doesn't work
  }

lazy val `benchmark` = project.in(file("benchmark"))
  .enablePlugins(JavaServerAppPackaging, DockerPlugin)
  .settings{
    mainClass in Compile := Some("path/to/Benchmark") // Doesn't work
  }

这不起作用,因为在stage步骤中找不到mainClass。

当我将mainClass定义为全局参数时,它可以工作,但是我不能以此方式构建两个自动运行的Docker映像。

感谢您的帮助

1 个答案:

答案 0 :(得分:3)

我对sbt-native-packager不熟悉,但是mainClass是类路径而不是文件路径,因此必须将其定义为:

mainClass in (Compile, packageBin) := Some("com.bar.baz.Foo")