我有一個SBT項目,它使用內部的Nexus存儲庫來獲取它的一些依賴關係。當我運行update
,我看到下面的警告消息:SBT中未解決的依賴項:找不到ivy文件
[info] Resolving foo.bar.baz#foobar;2.0.1
...
[debug] The Repo of Interest: no ivy file found for foo.bar.baz#foobar;2.0.1
[warn] module not found: foo.bar.baz#foobar;2.0.1
[warn] ==== local: tried
...
... several irrelevant repositories omitted...
...
[warn] ==== The Repo of Interest: tried
[warn] http://internal.url.com/nexus/content/repositories/releases/foo/bar/baz/foobar/2.0.1/foobar-2.0.1.pom
...
... some other repositories omitted...
...
上面顯示的URL看起來像它應該工作,因爲我可以在瀏覽器中打開POM沒有問題(請注意,我已經修改了網址,以便您將不得不承認我的話,它的作品)。
更令人困惑的是,我只在試圖在某些機器上構建時纔看到這個問題。
即使開始調試此問題,我該如何解決?有沒有額外的日誌記錄可以讓我瞭解爲什麼SBT/Ivy忽略位於上述URL的POM?
UPDATE:我build.sbt定義解析器如下:
resolvers := Seq(
...,
"The Repo of Interest" at "http://internal.url.com/nexus/content/repositories/releases",
...
)
另外,http://internal.url.com/nexus/content/repositories/releases/foo/bar/baz/foobar/2.0.1文件夾具有POM,罐子,來源罐子,爲所有這些文件的相關MD5和SHA1。 POM的文件看起來像:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>foo.bar.baz</groupId>
<artifactId>foobar</artifactId>
<version>2.0.1</version>
<dependencies>
...
</dependencies>
</project>
更新#2:構建只出現是工作在其他機器上,因爲他們已經有了~/.ivy2/cache/foo/bar/baz/foobar/jars
下高速緩存相關罐子的副本。
更新#3:着眼於更緊密地記錄了一點之後,我相信The Repo of Interest: no ivy file found for foo.bar.baz#foobar;2.0.1
是真正的錯誤消息
您能否看看您的「The Repo of Interest」解析器的配置。最典型的問題:(1)解析器工件路徑配置不正確,(2)解析器不處於Maven兼容模式。你可以使用sbt控制檯來查看你的解析器 - 檢查解析器 –
我已經更新了這個問題,以顯示如何在build.sbt中定義解析器。我相信它被定義爲使用Maven格式,這就是爲什麼它首先搜索pom文件的原因。 「檢查解析器」沒有提供太多細節。它顯示:'[info]設置:scala.collection.Seq [sbt.Resolver] =列表(...,感興趣的回購:http://internal.url.com/nexus/content/repositories/releases,。 ..)' –
請勿使用':='。您覆蓋所有設置。只需附加新的解析器:Global ++ = Seq(...)中的解析器或Global + = ...中的解析器。 –