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

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

  • 解决确切的依赖关系可以正常工作
  • latest.integration也可以正常工作
  • 格式为x.y.+的通配符没有找到,而是在搜索文字模式。我收到以下形式的错误:

  • [警告] ==== myrepo:已尝试
    [警告] file://path/to/my/repo/myorg/mypackage_2.10/[revision]/ivy- [revision] .xml
    [info]解决了myorg#mypackage_2.10; 2.7.1。+ ...
    找不到[警告]模块:myorg#mypackage_2.10; 2.7.1。+

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

    我最困惑的是,解析器除了对+通配符依赖项以外的任何其他功能都可以正常工作。我试图四处浏览 Ivy 文档,以确定某些解析器(例如我正在使用的file://解析器)是否未实现某些类型的依赖项解析,但这似乎不是问题,所以我很困惑。知道我能做些什么,或者可能是什么原因导致的吗?

    最佳答案

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

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

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

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

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

    关于scala - sbt/ivy无法解决文件系统解析器上的通配 Ivy 依赖项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25428309/

    10-15 11:18