I have an SBT project that contains multiple classes with main
, i.e. MyClass extends App
. One-jar works fine when there is only one such class. If it finds multiple classes it prompts me to choose which one I want to package:
> one-jar
Multiple main classes detected, select one to run:
[1] com.smth.AppOne
[2] com.smth.AppTwo
Enter number:
I'd like to configure one-jar to automatically package all main classes. In documentation it defines default main class as mainClass in run in Compile
, so it looks like it expects only one value.
If this is not possible I'm curious why not. :)
For now I can only think of some hacks like creating a surrogate project for each jar or setting a mainClass
in SBT each time before calling one-jar
(multiple times per build). These approaches obviously have their deficiencies.
It's not about SBT or onejar plugin. When you pack your project into the jar file, both main classes would be packed. JAR File specification defines that you can have as many classes with
main()
method as you want, but there should be only one class withmain()
method defined inMain-Class
attribute per JAR