sbt - 使用 sbt-aether-deploy 和 sbt-native-packager

标签 sbt sbt-native-packager

有没有人使用 sbt-aether-deploy 将 sbt-native-packager 生成的工件(在我的例子中是 tgz)发布到 nexus 仓库? (我需要这个用于带时间戳的快照,特别是 nexus 工件解析 REST 资源中的“正确”版本标签)。

我可以做一个或另一个,但无法弄清楚如何将 Universal 中的 packagedArtifacts 添加到 sbt-aether-deploy 部署的工件中以执行这两项操作。

我怀疑要追求的路径是到 addArtifact() Universal 中的 packagedArtifacts 或创建另一个 AetherArtifact,然后覆盖/替换 deployTask 以使用该 AetherArtifact?

非常感谢任何帮助。

最佳答案

我是 sbt-aether-deploy 插件的作者,我刚翻过这个帖子。

import aether.AetherKeys._

crossPaths := false //needed if you want to remove the scala version from the artifact name

enablePlugins(JavaAppPackaging)

aetherArtifact := {
    val artifact = aetherArtifact.value
    artifact.attach((packageBin in Universal).value, "dist", "zip")
}

这还将发布另一个主要工件。

如果您想禁止发布主神器,则需要重写神器坐标。 Maven 需要一个主要工件。

我为此目的添加了一种替换主要工件的方法,但我现在可以看出这种方法有缺陷。它仍然会假定工件作为 jar 文件发布。由于 SBT 默认将 POM 打包设置为 jar,因此主要工件类型被锁定。

如果这是一个应用程序,那么该限制可能没问题,因为 Maven 永远不会将其解析为工件。

Maven 术语中的“正确”方法是向工件添加分类器并将 POM 文件中的“packaging”更改为“pom”。我们会看看我是否有时间更改那个特定部分。

关于sbt - 使用 sbt-aether-deploy 和 sbt-native-packager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23147029/

相关文章:

Scala SBT 如何同时运行测试和测试

scala - 使用 sbt 和 Akka 微内核运行应用程序

scala - SBT native 打包程序不会将文件复制到 Docker 镜像

scala - 使用 sbt native-packager 修改 rpm 的安装目录

android - Sbt LibGdx : Build chain hangs in packaging step

scala - 如何在使用 actors 和 sbt 更改代码后重新加载 scala 应用程序

scala - SBT:子项目中的 plugins.sbt 被忽略?

sbt - 追踪关于 plugins.sbt 的 sbt 驱逐

scala - 如何使sbt-native-packager结合两层docker镜像

sbt 在包中包含自定义目录