【问题标题】:Packaging and Deploying Scala Applications打包和部署 Scala 应用程序
【发布时间】:2011-03-02 21:34:14
【问题描述】:

打包 Scala 应用程序以在台式 PC 上使用的最简单方法是什么?我猜这将是一个 jar 文件的形式。

目前我正在使用 SBT 编译和运行程序

我对安装了 Scala(以及类路径中的库)的机器以及只有 Java 的机器的解决方案感兴趣。

【问题讨论】:

    标签: deployment scala jar packaging sbt


    【解决方案1】:

    打包 Scala 应用程序的最简单(也是最一致的)方法是打包到 JAR 中(就像您对普通 Java 应用程序所做的那样)。只要 JAR 包含标准编译的 Java 类,您就可以运行“Scala”JAR,即使您没有 Scala 运行时(您只需要 Java 运行时和类路径中的 scala-lang.jar)。您可以在清单中指定主类(应用程序功能的网关)

    Main-Class: mypackage.MyClass
    

    这样您就可以调用它,只需将 JAR 名称传递给 java.exe。

    java -jar myjar.jar
    

    您可以在 SBT 项目定义中specify the main class

    【讨论】:

    • 我设法使用 SBT 中的“package”命令做到了这一点。我想你不知道如何在生成的 jar 文件中包含 scala-library.jar?
    • 将JAR放入src/main/resources,并添加到classpath -->> override val manifestClassPath = Some("scala-library.jar")
    • 但是,即使您将 scala-library.jar 打包到您的应用程序 jar 中,它也不会被类加载器引导。为了使我上面提到的清单更新工作,您必须将 scala-library.jar 与您的 jar 放在同一文件夹中。
    • @SimonMorgan:迟了半年,但可能对其他人有用:您可能想尝试使用此插件在 jar 中包含依赖项:github.com/sbt/sbt-assembly
    【解决方案2】:

    http://www.scala-sbt.org/sbt-native-packager/index.html

    该插件允许您以多种格式(zip、tar、deb、dmg、msi 等)和不同的架构类型打包。

    【讨论】:

      猜你喜欢
      • 2015-12-22
      • 2011-02-03
      • 2019-10-09
      • 2018-02-05
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 2011-02-19
      • 1970-01-01
      相关资源
      最近更新 更多