如何使用 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 包?