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

时间:2014-07-22 23:22:56

标签: scala sbt sbt-native-packager

我正在使用:

  • scala 2.10.3
  • sbt 13.2

带插件:

addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "0.7.3")

我使用universal:packgeBin生成通用zip文件并发布到ivy存储库。 我想将zip文件名从project_id_scalaversion_buildVersion.zip更改为project_id_scalaversion_buildVersion_dist.zip。我该怎么做?

2 个答案:

答案 0 :(得分:10)

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

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

packageName in Universal := s"${name.value}_${scalaVersion.value}_${version.value}_dist"

答案 1 :(得分:9)

我认为您不能轻易地为universal:packageBin更改生成的工件的名称。

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

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

但是,这也会修改生成的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
}

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