Scala SBT:独立罐子

dsg*_*dsg 18 scala executable-jar package sbt

答案:使用Simple Build Tool制作独立jar似乎是我需要的,但它没有足够的信息给我,所以这是一个后续.

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

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

(3)创建后,我在哪里可以找到它?


我尝试过的:

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

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

    (从之前,用于在与SBT分开的VM中运行项目)和新的:

    trait AssemblyProject extends BasicScalaProject

    从链接的答案.

  • 我也试过粘贴体(所有defslazy valAssemblyProject成体ForkRun.

要创建一个jarpackage在SBT提示符下运行并得到:

[info] Packaging ./target/scala_2.8.1/dsg_2.8.1-1.0.jar ...
[info] Packaging complete.
Run Code Online (Sandbox Code Playgroud)

所以我尝试dsg_2.8.1-1.0.jar通过shell 运行shell:

java -jar dsg_2.8.1-1.0.jar 
Run Code Online (Sandbox Code Playgroud)

但我得到:

Failed to load Main-Class manifest attribute from
dsg_2.8.1-1.0.jar
Run Code Online (Sandbox Code Playgroud)

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

Jan*_*anx 7

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

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