在VSCode上使用Scala-Metals构建jar文件

fkvaft9z  于 2023-06-23  发布在  Scala
关注(0)|答案(3)|浏览(306)

我正在尝试使用VSCode和metals扩展为Scala和Spark开发。我的设置是按照说明(here)使用开发容器。现在我的代码已经运行了,我需要构建一个jar文件来部署到Spark。有没有办法在金属扩展中做到这一点?
我读过关于使用sbt-assembly构建一个fat jar的文章,但我不确定如何将其与我的设置集成。任何帮助将不胜感激。

编辑

更清楚地说,metals VSCode扩展使用bloop或sbt-bsp作为构建服务器,我已经将其配置为使用sbt服务器。我的问题是,我是否以及如何将sbt-assembly扩展与它集成。

xiozqbni

xiozqbni1#

我找到了我的问题的答案,谢谢大家的帮助。

  • VSCode的Metals扩展不提供任何方式来运行尚未在构建命令窗口中公开的sbt任务。
  • 我可以在Metals运行的VSCode的终端窗口中运行sbt,只要Metals配置为使用bloop而不是sbt。如果Metals被配置为使用sbt,那么sbt服务器已经在运行,我无法创建一个新的示例或获取对现有示例的引用。
oxcyiej7

oxcyiej72#

sbt compile之后的sbt package应该会生成您想要的结果。
您可以找到更多关于生成JAR here然后运行JAR here的信息。

mzsu5hc0

mzsu5hc03#

对于任何仍然偶然发现这个问题的人来说,我只是浪费了几个小时浏览所有内容。有两种类型的Jar文件:
1.依赖关系jar文件:添加到项目中以使用其代码的对象)
1.单机(胖)jar文件:你可以直接执行,或者双击,或者通过命令行运行。
在第一种情况下,您可以简单地使用sbt package,它将为您生成一个包。项目中的任何依赖项都将成为该jar的依赖项,您可以将其导入到项目中。
在第二种情况下,您需要安装一个类似sbt-assembly的工具,它允许您下载依赖项并将它们包含在您生成的打包jar中。这将允许您的代码从任何地方运行。为此,您需要将addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "1.0.0")(或任何最新版本)添加到plugins.sbt文件中,然后可以将代码重新导入VSCode,然后从终端运行sbt assembly。我还没有找到将这个过程与VSCode上的一个按钮集成的方法,但它足够简单,可以运行一个命令。
希望这对yall有帮助

相关问题