Scala SBT:独立罐子

时间:2011-05-17 04:08:05

标签: scala package executable-jar sbt

答案: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

    来自链接的答案。

  • 我还尝试将身体(defs的所有lazy valAssemblyProject粘贴到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时,我从列表中选择。也许我需要在创建包时指定默认值?

2 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:1)

sbt-assembly 是一个sbt插件,可以创建一个包含所有依赖项的独立jar的Scala sbt项目。

有关详细信息,请参阅this post