4

我有一个 maven2 存储库,我试图从中获取带有附加时间戳的快照工件。我(不出所料)能够在使用 maven2 构建时很好地检索它,但是在使用simple-build-tool (sbt) 构建时,我非常喜欢,我无法将它拉下来。

我可以从这个关于 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")

但它确实拉动了工件。但是它不会取工件的依赖项。所以看来我还是有问题。

4

1 回答 1

2

好吧,我解决了这个问题,但它实际上不是 SBT 问题,它是 100% 的用户错误。

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

但是,现在我已经正确设置了身份验证,我改回了一个常规的存储库声明,如下所示:

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

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

于 2010-12-05T03:22:43.163 回答