【问题标题】:how to compile multiple different jar files in sbt如何在 sbt 中编译多个不同的 jar 文件
【发布时间】:2020-01-13 09:18:41
【问题描述】:

我在 sbt 中有一个项目,想编译多个 jar,它们都包含不同的主类,可以提交给 spark。 而且因为这种jar非常多,而且大部分都有一些共同的依赖关系,不方便将它们拆分到不同的子项目中。所有这些主要的类源文件都在同一个目录中,比如说,在 src/main/scala/com.xx.yy 下。那么如何编写build.sbt来将所有的主类编译成不同的jar或者通过主类的名字来编译,就像编译不同的子项目一样。 请帮忙,sbt 很难使用,我找不到任何文档。非常感谢。

【问题讨论】:

  • 不,sbt 程序集不是我想要的。我只想要不同的罐子,并以不同的方式安排罐子来点燃。你可以认为它就像官方的 spark/examples 目录一样,一个目录中有很多示例,并在另一个目标目录中生成独立的 jar 文件。但是现在 spark 是由 maven 构建的,我正在 sbt 中寻找解决方案

标签: scala intellij-idea jar compilation sbt


【解决方案1】:

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

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

【讨论】:

  • 这听起来是个好主意,我会试试的!但另一方面,官方的spark示例目录确实在一个src中有很多不同的主类,并且产生了很多独立的jar!知道它如何或可以在 sbt 中工作吗?
  • 请分享您所指的火花示例的链接。此外,通过 Maven 或 Gradle 构建项目而不是 sbt 是一种更优雅的方式。
猜你喜欢
  • 2019-06-07
  • 1970-01-01
  • 2012-12-19
  • 2011-09-15
  • 2016-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-20
相关资源
最近更新 更多