将RPM发布到nexus 3

时间:2017-12-20 15:06:42

标签: sbt sbt-native-packager

我正在使用sbt-native-packager构建一个rpm,然后我们通过Nexus存储到maven2托管的repo中。这在Nexus 2中运行得很好,但是一旦我们转移到Nexus 3,它就不再接受rpm进入回购。它接受jar,sources-jar,sources-javadoc和pom fine,但是当涉及到rpm时它会产生502 Bad Gateway错误(我相信这意味着它不符合maven类型?)

java.io.IOException:对URL http://nexus.snip.com/repository/releases/com/snip/email-dispatcher-consumer/1.0.17/email-dispatcher-consumer-1.0.17.rpm的PUT操作失败,状态码为502:Bad Gateway

两个问题:

1)有没有办法告诉rpm中的publishTo发布到另一个nexus端点?也许是一个原始的托管回购?我尝试了以下方法:

publishTo in Rpm := {
    val nexus = "http://nexus.snip.com/"
    Some("releases" at nexus + "repository/rpm-build-storage")
}

但这没有达到预期的效果。

2)有没有办法像我们在Nexus 2中那样将rpm推入现有仓库?

我们使用sbt-release并在发布过程中添加了以下发布步骤,这对Nexus 2起了很好的作用

val publishRPM = ReleaseStep(action = st => {
    val extr: Extracted = Project.extract(st)
    val ref: ProjectRef = extr.get(thisProjectRef)
    extr.runAggregated(
        publish in Rpm in ref,
        st
    )
    st
})

1 个答案:

答案 0 :(得分:1)

  

有没有办法告诉rpm中的publishTo发布到另一个nexus端点?也许是一个原始的托管回购?

是的,有。我不得不自己修补一下。你几乎做对了,但是sbt / ivy使用唯一的字符串名来查找解析器,所以你必须在正确的范围内添加它们。如果您可以在sbt-native-packager上打开一个问题,将其添加到Deployment插件中,那就太棒了。

// NOT NECESSARY. This resolver is automagically added to the `otherResolvers` setting.
publishTo := Some(Resolver.file("file-target", target.value / "ivy2" ))

// add your resolver to the `otherResolvers` setting and rpm:publish will find it
otherResolvers += Resolver.file("file-rpm", target.value / "ivy2-rpm")
publishTo in Rpm := Some(Resolver.file("file-rpm", target.value / "ivy2-rpm"))
  

有没有办法像我们在Nexus 2中那样将rpm推入现有的回购?

我不知道:(

希望第一个答案可以帮助你:)

欢呼和新年快乐, 缪奇