如何使用sbt-native-packager更改通用zip文件名

use*_*724 4 scala sbt sbt-native-packager

我在用:

  • 斯卡拉2.10.3
  • sbt 13.2

带插件:

addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "0.7.3")
Run Code Online (Sandbox Code Playgroud)

我正在使用universal:packgeBin生成通用zip文件并发布到ivy存储库.我想将zip文件名更改project_id_scalaversion_buildVersion.zipproject_id_scalaversion_buildVersion_dist.zip.我该怎么办?

mat*_*aru 11

这个答案基于我使用过的1.0.3版本,但它也应该适用于最新版本(1.1.5).

您可以根据需要为包装命名.唯一要做的是将以下设置添加到项目的配置中:

packageName in Universal := s"${name.value}_${scalaVersion.value}_${version.value}_dist"
Run Code Online (Sandbox Code Playgroud)


lpi*_*ora 9

我认为你不能轻易改变生成的工件的名称universal:packageBin.

您可以使用全局更改生成的工件的名称artifactName.

artifactName := { (sv: ScalaVersion, module: ModuleID, artifact: Artifact) =>
  artifact.name + module.revision + "_dist." + artifact.extension
}
Run Code Online (Sandbox Code Playgroud)

但是,这也会修改生成的jar文件的名称,也可能修改生成的工件的其他名称.

如果您只想更改生成的文件的名称,universal:packageBin您可以在生成文件后重命名该文件.Sbt为您提供了相当容易的实用工具.

packageBin in Universal := {
  val originalFileName = (packageBin in Universal).value
  val (base, ext) = originalFileName.baseAndExt
  val newFileName = file(originalFileName.getParent) / (base + "_dist." + ext)
  IO.move(originalFileName, newFileName)
  newFileName
}
Run Code Online (Sandbox Code Playgroud)

现在调用universal:packageBin应执行新任务,该任务将在创建文件后重命名该文件.