sbt-assembly 发布 Scala 项目

本文介绍如何使用sbt-assembly插件将Scala项目及其依赖打包为一个可执行的JAR文件。通过简单的步骤指导,包括安装插件、配置assembly.sbt文件及运行打包命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sbt-assembly 是一个非常实用的sbt插件,可以将当前项目的二进制包以及依赖的所有第三方库都打包成一个jar包发布,即one-jar, 对于那种直接运行的应用程序很方便。
1.首先在 project/plugins.sbt: 下加入这段代码:

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 := "spark_sbt.jar"
 test in assembly := {}
 mainClass in assembly := Some( "Spark_Test")
 assemblyOption in packageDependency ~= { _.copy(appendContentHash = true) }
mergeStrategy in assembly <<= (mergeStrategy in assembly) { (old) =>
{
  case PathList(ps @ _*) if ps.last endsWith "axiom.xml" => MergeStrategy.filterDistinctLines
  case PathList(ps @ _*) if ps.last endsWith "Log.class" => MergeStrategy.first
  case PathList(ps @ _*) if ps.last endsWith "LogConfigurationException.class" => MergeStrategy.first
  case PathList(ps @ _*) if ps.last endsWith "LogFactory.class" => MergeStrategy.first
  case PathList(ps @ _*) if ps.last endsWith "SimpleLog$1.class" => MergeStrategy.first
  case x => old(x)
}
}

https://github.com/sbt/sbt-assembly

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值