答案: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 val
和AssemblyProject
粘贴到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
时,我从列表中选择。也许我需要在创建包时指定默认值?
答案 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。