我有一个 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")
但它确实拉动了神器。但是它不会拉出工件的依赖项。所以我好像还是有什么问题。
最佳答案
好的,我已经解决了这个问题,但这实际上不是 SBT 问题,而是 100% 的用户错误。
我使用的 Nexus 需要身份验证。我没有正确设置身份验证凭据( see my authentication question ),并且因为它没有正确地进行身份验证,所以它没有找到元数据 pom 文件,所以 SBT 打印出错误消息说它失败了我错误地假设它正在验证但没有解决。所以我开始弄乱模式,正如实际问题中所证明的那样。
但是,现在我正确设置了身份验证,我改回了一个常规的存储库声明,如下所示:
val snapshotsRepo = "Snapshots Repository" at "http://host:port/path/to/snapshots/root/"
一切正常。检索工件并解决依赖关系。
关于maven-2 - 如何使用 SBT 从 Nexus 检索快照依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4342079/