maven-2 - 如何使用 SBT 从 Nexus 检索快照依赖项?

标签 maven-2 sbt ivy nexus

我有一个 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/

相关文章:

java - 共享的ivy存储库只是一个网络驱动器吗?

eclipse - IvyDE 使用 Eclipse 中的动态 Web 项目解决工作区中的依赖关系

maven - 在多模块设置中使用 maven ${basedir}

.net - 为什么 .NET 中不需要 Maven?

scala - 如何让 "sbt hello, world"运行?

scala - sbt 在动态任务中设置 java 选项

gradle - sbt PublishLocal 到 ivy2,供 Gradle/Intellij 使用

maven - 如何使Maven使用版本范围内的最新发行版?

eclipse - 如何在 Eclipse 中使用 Groovy 开发 Maven 插件

scala - 无法解析符号 "Scalatest"