So i figured some solution (not actually specifying mainClass in terminal)
i had a project/module (its a sbt multi project) and basically copied the old module with just a few changes including the 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, ...)
now i can select the new project/module in sbt and run assembly
which produces a jar in the new target folder.
This is basically pretending that there are 2 modules in one.
note: i didn't run the jar yet.