如何使用sbt程序集传递mainClass参数

如何使用sbt程序集传递mainClass参数,sbt,sbt-assembly,Sbt,Sbt Assembly,不确定是否可能,但我希望有几个主类,并且不希望每次运行sbt assembly 调用assembly时是否有方法传递mainClass参数? 比如: project>assembly-mainClass someApp.scala 谢谢所以我想出了一些解决方案(实际上没有在终端中指定mainClass) 我有一个项目/模块(它是一个sbt多项目),基本上复制了旧模块,只做了一些修改,包括mainClass lazy val oldProject = (project in file("modul

不确定是否可能,但我希望有几个主类,并且不希望每次运行
sbt assembly

调用
assembly
时是否有方法传递
mainClass
参数? 比如:
project>assembly-mainClass someApp.scala


谢谢

所以我想出了一些解决方案(实际上没有在终端中指定mainClass)

我有一个项目/模块(它是一个sbt多项目),基本上复制了旧模块,只做了一些修改,包括mainClass

lazy val oldProject = (project in file("modules/old-project"))
...

lazy val newProject = oldProject.copy(
  id = s"${oldProject.id}-new"
).settings(
    mainClass in assembly := Some("someNewApp"),
    assemblyJarName in assembly := "someNew.jar",
    target := file("modules/some-new-project")
  )


lazy val root = (project in file("."))
  .settings(commonSettings)
  .dependsOn(..., oldProject, newProject, ...)
  .aggregate(..., oldProject, newProject, ...)
现在我可以在sbt中选择新的项目/模块并运行
assembly
,它在新的目标文件夹中生成一个jar

这基本上是假装一个模块中有两个模块


注意:我还没有运行jar。

我会尝试以下方法:

sbt "set mainClass in assembly := Some(\"com.some.Class\")" assembly

基本上,您应该能够使用这样的语句定义任何构建范围中的任何键。只要注意转义引号

Thx,我接受这个答案而不是我的答案,因为它回答了具体的问题。