【问题标题】:sbt/ivy failing to resolve wildcard ivy dependencies on a filesystem resolversbt/ivy 无法解析通配符 ivy 对文件系统解析器的依赖
【发布时间】:2014-10-15 04:53:04
【问题描述】:

我正在使用~/.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 [信息] 正在解决 myorg#mypackage_2.10;2.7.1.+ ... [警告] 未找到模块:myorg#mypackage_2.10;2.7.1.+

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

我很困惑,因为解析器除了+ 通配符依赖项之外的任何东西都可以正常工作。我尝试查看 ivy 文档,以确定某些解析器(例如我正在使用的 file:// 解析器)是否没有实现某些类型的依赖解析,但这似乎不是问题,所以我大部分都难住了。知道我可以做些什么来使它工作,或者可能是什么原因造成的?

【问题讨论】:

标签: scala sbt ivy


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2013-03-31
    • 2018-01-12
    • 2011-05-14
    • 2017-03-16
    • 2015-09-01
    • 2016-05-14
    • 2013-04-16
    • 2023-03-30
    • 2012-12-24
    相关资源
    最近更新 更多