使用 sbt-native-packager 时将 tgz 重命名为 tar.gz

Posted

技术标签:

【中文标题】使用 sbt-native-packager 时将 tgz 重命名为 tar.gz【英文标题】:Rename tgz to tar.gz while using sbt-native-packager 【发布时间】:2018-12-28 06:44:00 【问题描述】:

我使用sbt-native-packager 构建了一个扩展名为.tgz 的压缩tar 文件。然后我使用

添加该工件
artifact in (Compile, (packageZipTarball in Universal)) := 
  val previous: Artifact = (artifact in (Compile, (packageZipTarball in Universal))).value
  previous.withClassifier(Some("assembly")).withExtension("tar.gz")
 ,
 addArtifact(artifact in (Compile, (packageZipTarball in Universal)), (packageZipTarball in Universal))

使用此配置,.tgz 文件将作为.tar.gz 发布到 Nexus 或本地存储库。

如何在不影响工件发布的情况下将目标目录中的.tgz重命名为.tar.gz

【问题讨论】:

【参考方案1】:

为了确保我的问题是正确的:

$ sbt universal:packageZipTarball

生成一个扩展名为 .tgz 的文件。你想要的是一个扩展名为.tar.gz的文件。

您可以通过覆盖universal:packageZipTarball 并简单地移动结果来实现此目的。我还没有测试过这段代码,但它应该能给你一个粗略的想法

packageZipTarball in Universal := 
   val targzFile = universal:packageZipTarball
   val renamedFile = targzFile.getParent / targzFile.getName.replaceAll("\\.tgz$", ".tar.gz")
   IO.move(targzFile, renamedFile)
   renamedFile

干杯, 渚

【讨论】:

以上是关于使用 sbt-native-packager 时将 tgz 重命名为 tar.gz的主要内容,如果未能解决你的问题,请参考以下文章

任何使用 sbt-native-packager 的好例子

如何使用 sbt-native-packager 设置 Docker Registry

扩展 sbt-native-packager (Docker)

使用 sbt-native-packager 通过 JavaServerAppPackaging 检测 prometheus 导出器

使用 sbt-native-packager 时的配置目录

使用 sbt-native-packager 构建 docker 包时重复映射