在 SBT 中重命名程序集生成的 uberjar

Rename assembly-generated uberjar in SBT

如何重命名和移动使用 SBT 程序集插件生成的 uberjar?

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.6")

我的 assemblyMergeStrategy(用于删除 META-INF):

assemblyMergeStrategy in assembly := {
   case PathList("META-INF", xs @ _*) => MergeStrategy.discard
   case x => MergeStrategy.first
}

它生成如下内容:

target/scala-2.12/my-project-assembly-0.1.jar 

我希望能够使用一致的名称(无需单独的脚本)自动重命名(并在另一个目录中生成)。

您可以在项目 page 中找到一些文档。在那里,您可以找到可以为 assembly 任务重写的键。

您要搜索的是assemblyJarNameassemblyOutputPath。然后,您的项目构建应该类似于:

lazy val myProject = (project in file(".")).
  settings(
    ...
    assemblyJarName in assembly := "myName.jar",
    assemblyOutputPath in assembly := "...",
    ...
  )