我有一个 SBT 项目,其中包含main
个多个类,即MyClass extends App
。当只有一个这样的类时, One-jar 可以正常工作。如果找到多个类,它会提示我选择要打包的类:
> one-jar
Multiple main classes detected, select one to run:
[1] com.smth.AppOne
[2] com.smth.AppTwo
Enter number:
我想配置one-jar来自动打包所有主类。在documentation中,它将默认主类定义为mainClass in run in Compile
,因此它看起来只需要一个值。
如果这是不可能的,我很好奇为什么不呢。 :)
现在我只能想到一些黑客,比如为每个jar创建一个代理项目,或者每次在调用mainClass
之前在SBT中设置one-jar
(每次构建多次)。这些方法显然有其不足之处。
答案 0 :(得分:1)
这不是关于SBT或onejar插件。将项目打包到jar文件中时,将打包两个主类。 JAR File specification定义您可以根据需要使用main()
方法创建尽可能多的类,但每个JAR的main()
属性中只应定义一个Main-Class
方法的类
答案 1 :(得分:1)
答案 2 :(得分:0)
来自文档:
mainClass in oneJar := Some("com.acme.Woozler")
尝试添加
mainClass in oneJar := Some("com.smth.AppOne")
你配置中的
答案 3 :(得分:0)
我会尝试sbt多项目构建。您应该能够为每个项目设置一个主类。