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

Posted

技术标签:

【中文标题】如何使用 sbt-native-packager 更改通用 zip 文件名【英文标题】:How do I change universal zip file name using sbt-native-packager 【发布时间】:2014-09-13 23:40:18 【问题描述】:

我正在使用:

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。我该怎么做?

【问题讨论】:

只是一个文件。您是否尝试在构建文件中重命名该文件?您可以只使用在java.io.File 上定义的 renameTo。 【参考方案1】:

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

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

Universal / packageName := s"$name.value_$scalaVersion.value_$version.value_dist"

【讨论】:

谢谢伙计。这是完美的!【参考方案2】:

我认为你不能轻易更改生成的工件的名称,只是为了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 应该会执行您的新任务,该任务将在文件创建后重命名。

【讨论】:

非常感谢。这在项目 target/universal/ 文件夹中为我们做了非常好的伎俩。但是,我们在尝试发布到 ivy 时仍然遇到问题。关于如何解决这个问题的任何想法?提前谢谢你,Kayvan @user111724 实际上当我想到它时,你关心 *.jar 的名称还是你有一个 jar。也许最简单的工作选项就是使用version 键。例如。 version := "0.1_dist"?类似于"0.1-SNAPSHOT" 的工作原理。 这对我们有用。比你这么多的帮助:) 没问题,您可能想接受/支持答案;)

以上是关于如何使用 sbt-native-packager 更改通用 zip 文件名的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 sbt-native-packager 设置 docker 镜像名称

如何使用 sbt-native-packager 创建基本项目设置

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

如何使用 sbt-native-packager 创建 Upstart Zip 包?

如何使用 sbt-native-packager 在 Docker 中使二进制文件可执行?

如何在运行时为使用 sbt-native-packager 捆绑的应用程序加载配置文件