sbt assembly 發布 Scala 專案

2021-06-22 12:33:19 字數 1433 閱讀 6571

sbt-assembly 是乙個非常實用的sbt外掛程式,可以將當前專案的二進位製包以及依賴的所有第三方庫都打包成乙個jar包發布,即one-jar, 對於那種直接執行的應用程式很方便。

sbt版本:0.13.5 

使用方法如下:

addsbtplugin

("com.eed3si9n"

%"sbt-assembly"

%"0.11.2"

)

2、手工建立 ./assembly.sbt(注意:檔案放在根目錄下,主要作用是對assembly進行設定):

import

assemblykeys._

// put this at the top of the file

assemblysettings

// your assembly settings here

3、執行assembly任務,生成./target/scala_x.x.x/projectname-assembly-x.x.x.jar:

> assembly

乙個可參考的assembly配置:

import assemblykeys._

assemblysettings

jarname in assembly := "gogo.jar"

test in assembly := {}

mainclass in assembly := some( "barnes.boundmat01")

mergestrategy in assembly <<= (mergestrategy in assembly)

}

出現錯誤的解決方法:

錯誤資訊如下

[error] (*:assembly) deduplicate: different file contents found in the following:

[error] /home/mslinn/.ivy2/cache/org.fusesource.jansi/jansi/jars/jansi-1.4.jar:org/fusesource/jansi/ansi$1.class

[error] /home/mslinn/.ivy2/cache/org.scala-lang/jline/jars/jline-2.10.2.jar:org/fusesource/jansi/ansi$1.class

解決方法:

首先,用

sbt-dependency-graph外掛程式列印專案的依賴關係,確定上述錯誤中的jar包之間的關係。

然後,在assembly的配置檔案中,根據具體情況配置 

mergestrategy 。

參考:1、

2、/issues/92

sc輸入輸出

輸入輸出語句 為了從控制台讀寫資料,可以使用以read為字首的方法,包括 readint readdouble readbyte readshort readfloat readlong readchar readboolean及readline,分別對應9種基本資料型別,其中前8種方法沒有引數,r...

SC 刪除Windows服務

sc 刪除windows服務選項2008 07 15 14 25比如要刪除windows的時間服務,操作如下 sc delete w32time sc 刪除windows服務選項 sc windows乙個很有用的命令 sc delete servicename 使用這個命令即可,查詢其它功能用sc ...

位元大陸SC5 SC5 開發必讀

使用者得到了開發sdk包bmnnsdk2 bm1684和docker映象bm1684 ubuntu docker。安裝lib和驅動都是一次性的操作。cd bmnnsdk2 bm1684 v2.2.0 scriptsa x86模式 install lib.sh nntcb arm pcie 模式 in...