6

我在用:

  • 斯卡拉 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.zipproject_id_scalaversion_buildVersion_dist.zip. 我该怎么做?

4

2 回答 2

13

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

您可以随意命名您的包裹。唯一要做的就是将以下设置添加到项目的配置中:

Universal / packageName := s"${name.value}_${scalaVersion.value}_${version.value}_dist"
于 2016-11-23T13:27:49.000 回答
9

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

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

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

然而,这也会修改生成的 jar 文件的名称,并且可能还会修改生成的工件的其他名称。

如果您只想更改由 生成的文件的名称,universal:packageBin您可以在生成文件后重命名该文件。Sbt 为您提供实用程序,使这变得相当容易。

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

现在调用Universal/packageBin应该执行您的新任务,这将在文件创建后重命名文件。

于 2014-07-23T09:32:31.973 回答