有没有人使用 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/