2011-05-17 79 views
16

答案:Making stand-alone jar with Simple Build Tool看起來像我所需要的,但它沒有足夠的信息給我,所以這是一個後續。斯卡拉SBT:獨立瓶子

(1)如何根據需要調整答案?我不明白需要改變什麼。

(2)我運行什麼命令來創建獨立的jar?

(3)在哪裏可以找到創建後的jar?


我已經試過什麼:

  • 粘貼在鏈接的答案代碼逐字到我:project/build/dsg.scala文件。現在,該文件有一個

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

    (來自之前,用於從SBT在一個單獨的虛擬機上運行的項目)和新:

    trait AssemblyProject extends BasicScalaProject

    從鏈接答案

  • 我也試過粘貼體(所有defsAssemblyProjectlazy valForkRun身體

要創建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時從列表中選擇。也許我需要在創建包時指定默認值?

+1

我已經編輯了自2010年的答案(http://stackoverflow.com/questions/2887655/making-stand-alone-jar-with-simple-build-tool/2887681#2887681),以包括反義詞的sbt-onejar插件。 – VonC 2011-05-17 07:00:16

+0

可能的[如何從shell作爲普通命令行程序運行sbt主類?](http:// stackoverflow。COM /問題/ 7134993 /如何-DO-I-運行一個-SBT-主類從 - - 殼作爲正常的命令行程序) – 2013-12-28 20:45:47

+0

重複http://stackoverflow.com/q的/ 7134993/1305344和http://stackoverflow.com/q/7195079/1305344 – 2013-12-28 20:45:59

回答

7

這裏有一個書面記錄我的一種方式做,使與SBT一個可執行的JAR:

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

+0

謝謝。 (1)通過'override def mainClass:Option [String] = Some(「Test」)'(2)運行'assembly'任務(而不是'package')來設置默認入口點,並且(3)運行錯誤的可執行文件,正確的是'target/scala_2.8.1/dsg_2.8.1-assembly-1.0.jar' – dsg 2011-05-17 05:10:52

1

SBT組裝是SBT插件創建斯卡拉SBT項目的一個獨立的罐子全部它的依賴關係。

請參考this post瞭解更多詳情。