繁体   English   中英

有没有办法使用sbt-onejar在同一个SBT项目中自动打包多个主类?

[英]Is there a way to automatically package multiple main classes in the same SBT project with sbt-onejar?

我有一个SBT项目,包含多个带main类,即MyClass extends App 当只有一个这样的类时, 一个jar工作正常。 如果找到多个类,它会提示我选择要打包的类:

> one-jar

Multiple main classes detected, select one to run:

 [1] com.smth.AppOne
 [2] com.smth.AppTwo

Enter number: 

我想配置one-jar来自动打包所有主类。 文档中 ,它将默认主类定义为mainClass in run in Compile ,因此它看起来只需要一个值。

如果这是不可能的,我很好奇为什么不。 :)

现在我只能想到一些黑客,比如为每个jar创建一个代理项目,或者每次调用one-jar之前在SBT中设置一个mainClass (每次构建多次)。 这些方法显然有其不足之处。

这不是关于SBT或onejar插件。 将项目打包到jar文件中时,将打包两个主类。 JAR文件规范定义您可以根据需要使用main()方法创建尽可能多的类,但是每个JAR应该只有一个类具有在Main-Class属性中定义的main()方法

使用以下命令设置默认主类:

mainClass in (Compile, run) := Some("com.smth.AppOne")

来源: 此stackoverflow问答

来自文档:

mainClass in oneJar := Some("com.acme.Woozler")

尝试添加

mainClass in oneJar := Some("com.smth.AppOne")

在你的配置

我会尝试sbt多项目构建。 您应该能够为每个项目设置一个主类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM