我正在使用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
})
答案 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推入现有的回购?
我不知道:(
希望第一个答案可以帮助你:)
欢呼和新年快乐, 缪奇