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

Mys*_*Dan 6 scala ivy sbt

我正在使用该~/.sbt/repositories文件告诉sbt 0.13.5从哪个存储库中检索.该文件仅包含具有自定义布局localfile://存储库,该布局与标准sbt非常相似,sbtVersion并且scalaVersion表示了可选字段.

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

  • 解决确切的依赖项工作正常
  • 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://解析器我使用),不实施某些类型的依赖解析,但似乎并没有成为一个事情,所以我大多难住了.知道我可以做些什么来使它工作,或者可能导致它的原因?

Wad*_*ade 2

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

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

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

抱歉,我找不到引导我走上这条路的原始帖子,但下面的帖子可能有些相关。

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