【问题标题】:Scala SBT: standalone jarScala SBT:独立 jar
【发布时间】:2011-08-26 22:29:28
【问题描述】:

答案:Making stand-alone jar with Simple Build Tool 似乎是我需要的,但它对我来说没有足够的信息,所以这是一个后续。

(1) 我如何根据自己的需要调整答案?我不明白需要改变什么。

(2) 运行什么命令来创建独立 jar?

(3) jar 创建后在哪里可以找到?


我尝试过的:

  • 将链接答案中的代码逐字粘贴到我的:project/build/dsg.scala 文件中。该文件现在有一个

    class ForkRun(info: ProjectInfo) extends DefaultProject(info)

    (从以前开始,用于在与 SBT 不同的 VM 中运行项目)和新的:

    trait AssemblyProject extends BasicScalaProject

    来自链接的答案。

  • 我还尝试将正文(AssemblyProject 的所有 defslazy val 粘贴到 ForkRun 的正文中。

要创建jar,我在 SBT 提示符下运行 package 并得到:

[info] Packaging ./target/scala_2.8.1/dsg_2.8.1-1.0.jar ...
[info] Packaging complete.

所以我尝试通过以下方式从 shell 运行 dsg_2.8.1-1.0.jar

java -jar dsg_2.8.1-1.0.jar 

但我明白了:

Failed to load Main-Class manifest attribute from
dsg_2.8.1-1.0.jar

这可能是由于我的项目有多个入口点造成的吗?当我从 SBT 提示符执行 run 时,我从列表中选择。也许我需要在创建包时指定默认值?

【问题讨论】:

标签: scala package executable-jar sbt


【解决方案1】:

这是我用 SBT 制作可执行 jar 的一种方法:

http://janxspirit.blogspot.com/2011/01/create-executable-scala-jar-with-sbt.html

【讨论】:

  • 谢谢。结果我不是:(1)通过override def mainClass: Option[String] = Some("Test")设置默认入口点(2)运行assembly任务(而不是package)和(3)运行错误的可执行文件,正确的是@987654325 @
【解决方案2】:

sbt-assembly 是一个 sbt 插件,用于创建 Scala sbt 项目的独立 jar 及其所有依赖项。

请参阅this post 以获取更多详细信息并提供示例。

【讨论】:

    猜你喜欢
    • 2014-01-23
    • 1970-01-01
    • 2013-04-13
    • 2011-12-31
    • 2016-05-10
    • 1970-01-01
    • 2018-02-10
    • 2011-03-18
    • 1970-01-01
    相关资源
    最近更新 更多