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



我正在尝试使用VSCode和metals扩展为Scala和Spark进行开发。我的设置是使用一个dev容器,遵循说明(此处(。我现在已经运行了我的代码,我需要构建一个jar文件来部署到Spark。有没有办法在金属延伸范围内做到这一点?

我读过关于使用sbt-assembly构建胖罐子的文章,但我不确定如何将其与我的设置集成。如有任何帮助,我们将不胜感激。

编辑

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

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

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

对于那些仍然偶然发现这个问题的人来说,我只是浪费了几个小时来浏览所有内容。有两种类型的Jar文件:

  1. Dependencyjar文件:添加到项目中以使用其代码的文件(
  2. 独立(Fat(jar文件:通过双击或通过命令行运行直接执行的文件

在第一种情况下,您可以简单地使用sbt package,这将为您生成一个包。项目中的任何依赖项都将成为该jar的依赖项,并且您可以将其导入到您的项目中。

在第二种情况下,您需要安装一个类似sbt-assembly的工具,该工具将允许您下载依赖项,并将它们包含在您生成的打包jar中。这将允许您的代码在任何地方运行。要做到这一点,您需要将addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "1.0.0")(或任何最新版本(添加到plugins.sbt文件中,然后可以在其中将代码重新导入VSCode,然后从终端运行sbt assembly。我还没有找到让这个过程与VSCode上的按钮集成的方法,但它足够简单,可以运行一个命令。

希望这对yall 有所帮助

sbt compile之后的sbt package应该会生成您想要的结果。

您可以在这里找到更多关于生成JAR然后在这里运行JAR的信息。

相关内容

最新更新