sbt/ivy 无法解析通配符 ivy 对文件系统解析器的依赖
Posted
技术标签:
【中文标题】sbt/ivy 无法解析通配符 ivy 对文件系统解析器的依赖【英文标题】:sbt/ivy failing to resolve wildcard ivy dependencies on a filesystem resolver 【发布时间】:2014-10-15 04:53:04 【问题描述】:我正在使用~/.sbt/repositories
文件告诉 sbt 0.13.5 要从哪些存储库中检索。该文件仅包含local
和file://
存储库,其自定义布局与标准sbt 非常相似,其中sbtVersion
和scalaVersion
表示可选字段。
在解决我的项目的依赖项时,我注意到奇怪的行为:
解决确切的依赖关系工作正常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://
解析器)是否没有实现某些类型的依赖解析,但这似乎不是问题,所以我大部分都难住了。知道我可以做些什么来使它工作,或者可能是什么原因造成的?
【问题讨论】:
有趣。可以在github上放一个小的可复现样本吗? github.com/sbt/sbt/issues/2279 【参考方案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
【讨论】:
以上是关于sbt/ivy 无法解析通配符 ivy 对文件系统解析器的依赖的主要内容,如果未能解决你的问题,请参考以下文章
sbt 不能正常工作 - 找不到模块:org.scala-sbt