如何使用SBT从Nexus检索快照依赖关系?

问题描述:

我有一个maven2存储库,我试图用附加的时间戳获取快照工件。我(不出意外)在使用maven2构建时能够检索到它,但在构建simple-build-tool (sbt)时,我非常喜欢这种方法,所以我无法将其解决。如何使用SBT从Nexus检索快照依赖关系?

我可以从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") 

时间戳多余的,但它确实拉神器。然而,它确实不是拉取神器的依赖关系。所以看来我仍然有错误。

+0

我试图使用ivysettings.xml文件来定义解析器,但它似乎没有被SBT读取。我也尝试内联解析器XML。 – 2010-12-03 03:48:21

好吧,我得到了这个整理,但它实际上不是一个SBT问题,它是100%的用户错误。

Nexus我正在使用所需的身份验证。我没有正确设置认证凭证(see my authentication question),并且因为它没有正确认证,所以没有找到元数据文件,所以SBT打印出错误信息,说明它失败了,错误地认为它是认证但没有解决。所以我开始搞乱实际问题中证明的模式。

不过,现在我已经验证设置正确我改回只是一个普通的仓库声明,如下所示:

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

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