Scala 如何在sbt中编译多个不同的jar文件

Scala 如何在sbt中编译多个不同的jar文件,scala,intellij-idea,jar,compilation,sbt,Scala,Intellij Idea,Jar,Compilation,Sbt,我在sbt中有一个项目,希望编译多个jar,这些jar都包含一个不同的主类,可以提交给spark。 由于这种jar非常多,而且大多数jar都有一些共同的依赖项,所以将它们划分为不同的子项目并不方便。所有这些主要类源文件都位于同一目录中,比如src/main/scala/com.xx.yy下。因此,如何编写build.sbt来将所有的主类编译成不同的JAR,或者按照主类的名称进行编译,就像编译不同的子项目一样。 请帮助,sbt很难使用,我找不到任何相关文档。非常感谢。如果我理解正确,您的src文件

我在sbt中有一个项目,希望编译多个jar,这些jar都包含一个不同的主类,可以提交给spark。 由于这种jar非常多,而且大多数jar都有一些共同的依赖项,所以将它们划分为不同的子项目并不方便。所有这些主要类源文件都位于同一目录中,比如src/main/scala/com.xx.yy下。因此,如何编写build.sbt来将所有的主类编译成不同的JAR,或者按照主类的名称进行编译,就像编译不同的子项目一样。
请帮助,sbt很难使用,我找不到任何相关文档。非常感谢。

如果我理解正确,您的src文件夹中有许多主要类。您希望能够从一个jar从spark submit运行它们。那么答案是:

  • 您不需要为每个主类创建不同的JAR
  • 不要在build.sbt文件中定义任何“mainClass”,而是用所有这些类构建一个普通的jar。(输出将是一个jar,其中包含您的所有类、多个主类以及其他可重用的类和库)
  • 使用这个jar进行spark提交时,可以使用“-class”标记指定希望spark作业运行的主类,并运行所需的特定主类/应用程序

  • 不,sbt组装不是我想要的。我只想要不同的罐子,并以不同的方式安排罐子以激发火花。你可以认为它就像官方的spark/examples目录一样,在一个目录中有许多示例,在另一个目标目录中生成独立的jar文件。但是现在spark是由maven构建的,我正在sbtit中搜索一个解决方案听起来是个不错的主意,我会尝试!但另一方面,官方的spark examples目录在一个src中确实有许多不同的主类,并且产生了许多独立的JAR!你知道它在sbt中是如何工作的吗?请分享你所指的spark示例的链接。此外,通过Maven或Gradle进行项目建设是一种更优雅的方式,而不是sbt。