sbt / ivy无法解析文件系统解析器上的通配符常春藤依赖项

时间:2014-08-21 13:59:14

标签: scala sbt ivy

我正在使用~/.sbt/repositories文件告诉sbt 0.13.5要从中检索哪些存储库。该文件仅包含localfile://存储库,其自定义布局与标准版本非常相似,并且代表sbtVersionscalaVersion个可选字段。

在解决我的项目的依赖关系时,我注意到了奇怪的行为:

  • 解决确切的依赖关系正常
  • latest.integration也可以正常使用
  • 表单x.y.+ 的通配符分辨率不会查找任何内容,而是正在搜索文字模式。我收到错误的表格:
    [warn] ==== myrepo: tried
    [warn]   file://path/to/my/repo/myorg/mypackage_2.10/[revision]/ivy-[revision].xml
    [info] Resolving myorg#mypackage_2.10;2.7.1.+ ...
    [warn]  module not found: myorg#mypackage_2.10;2.7.1.+

如您所见,明确提及repo布局模式。

我大多感到困惑,因为除了+通配符依赖项之外,解析器的工作正常。我尝试在常春藤文档中查找某些解析器(例如我使用的file://解析器)是否不实现某些类型的依赖关系解析,但似乎没有是一件事,所以我大部分都难过。知道我可以做些什么才能让它发挥作用,或者可能造成什么呢?

1 个答案:

答案 0 :(得分:2)

过去我遇到了类似的问题。我们有一个或多个应用程序,我们将构建所​​有使用相同的Ivy2缓存。如果我们在这些构建中使用通配符,我们有时会遇到无法正确解析依赖关系的情况。它只会在我们使用通配符时引起问题。其他一切都很好。

我们发现的问题是在某些情况下Ivy2 Cache会损坏。通常,解决方案是从Ivy2 Cache中删除有问题的库。然后,如果我们再次运行构建,它将起作用。

我最终发现了一篇帖子,暗示Ivy2 Cache上的某些操作不是线程安全的。 I.E.同时运行多个构建可能在某些情况下破坏缓存。我们最终为所有构建设置了自定义Ivy Cache文件夹。这解决了这个问题。

很抱歉,我无法找到导致我走上这条道路的原始帖子,但下面的帖子可能有些相关。

https://groups.google.com/forum/#!topic/simple-build-tool/eCOkACPjm9E https://groups.google.com/forum/#!topic/simple-build-tool/wFXhJcngy9Y