我该如何使用SBT从Nexus检索快照依赖项?

4
我有一个maven2仓库,想要从中获取带有时间戳的快照构件。当使用maven2构建时,我可以成功检索到它,但当使用我更喜欢的simple-build-tool (sbt)进行构建时,无法拉取它。我可以从this question about snapshots in Ivy中看到,可以配置Ivy来获取快照构件,但我不知道如何告诉sbt去执行这个操作。当前配置的相关部分如下:
val snapshotsName = "Snapshots Repository"
val snapshotsUrl = new java.net.URL("http://host:port/path/to/root")
val snapshotsPattern = "[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]"
val snapshots = Resolver.url(snapshotsName, snapshotsUrl)(Patterns(snapshotsPattern))
Credentials(Path.userHome / ".ivy2" / ".credentials", log)

更新:经过一些调试,看起来我可以使用以下模式将其指向正确的构件URL。
val snapshotsPattern = "[organisation]/[module]/[revision]-SNAPSHOT/[artifact]-[revision](-[timestamp]).[ext]"

因此,我仍需要在依赖项中指定时间戳附加项

val dep = "group" % "artifact" % "0.0.1" extra("timestamp" -> "20101202.195418-3")

但它确实拉取了artifact。然而,它并没有拉取artifact的依赖项。所以看来我还是做错了什么。

我尝试使用ivysettings.xml文件来定义解析器,但似乎SBT没有读取它。我还尝试将解析器XML嵌入其中。 - Bryan J Swift
1个回答

2

好的,我已经解决了这个问题,但实际上这不是SBT的问题,完全是用户错误。

我使用的Nexus需要身份验证。我的身份验证凭据没有设置正确(请参阅我的身份验证问题),因为它没有正确地进行身份验证,所以它找不到元数据POM文件,因此SBT打印出了错误消息,我错误地认为它正在进行身份验证但无法解决。因此,我开始像实际问题中所示一样搞乱模式。

然而,现在我已经正确设置了身份验证,我改回了普通的存储库声明,如下所示:

val snapshotsRepo = "Snapshots Repository" at "http://host:port/path/to/snapshots/root/"

一切正常。已检索到工件并解决了依赖关系。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接