为啥 sbt 报告缺少 Scala 2.10.2 的库(自 8 月 1 日起)?

Posted

技术标签:

【中文标题】为啥 sbt 报告缺少 Scala 2.10.2 的库(自 8 月 1 日起)?【英文标题】:Why does sbt report missing libraries for Scala 2.10.2 (since Aug, 1th)?为什么 sbt 报告缺少 Scala 2.10.2 的库(自 8 月 1 日起)? 【发布时间】:2014-09-25 13:40:37 【问题描述】:

我有许多 Play 2.2.x 应用程序已经构建了几个月,没有出现任何问题。但是,从 2014 年 8 月 1 日开始,我开始收到以下警告和错误:

获取 org.scala-sbt sbt 0.13.0 ...

:: 问题摘要 :: :::: 未找到警告模块: org.scala-lang#scala-library;2.10.2

==== 本地:尝试过

/Users/dpope/.ivy2/local/org.scala-lang/scala-library/2.10.2/ivys/ivy.xml

==== typesafe-ivy-releases:尝试过

repo.typesafe.com/typesafe/ivy-releases/org.scala-lang/scala-library/2.10.2/ivys/ivy.xml

==== Maven 中心:尝试过

repo1.maven.org/maven2/org/scala-lang/scala-library/2.10.2/scala-library-2.10.2.pom

  module not found: org.scala-lang#scala-compiler;2.10.2

==== 本地:尝试过

/Users/dpope/.ivy2/local/org.scala-lang/scala-compiler/2.10.2/ivys/ivy.xml

==== typesafe-ivy-releases:尝试过

repo.typesafe.com/typesafe/ivy-releases/org.scala-lang/scala-compiler/2.10.2/ivys/ivy.xml

==== Maven 中心:尝试过

repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.10.2/scala-compiler-2.10.2.pom

  ::::::::::::::::::::::::::::::::::::::::::::::

  ::          UNRESOLVED DEPENDENCIES         ::

  ::::::::::::::::::::::::::::::::::::::::::::::

  :: org.scala-lang#scala-library;2.10.2: not found

  :: org.scala-lang#scala-compiler;2.10.2: not found

  ::::::::::::::::::::::::::::::::::::::::::::::

:: 使用详细或调试消息级别获取更多详细信息未解决 依赖项:org.scala-lang#scala-library;2.10.2:未找到未解决 依赖项:org.scala-lang#scala-compiler;2.10.2:未找到错误 在 sbt 执行期间:检索所需库时出错(请参阅 /Users/dpope/.sbt/boot/update.log 完整日志)错误:无法 检索 sbt 0.13.0

(我从上面的网址中删除了 http:)

我的构建命令是:

java -Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=384M -jar /opt/sbt/sbt-launch-0.13.0.jar -Dsbt.log.noformat=true clean compile test dist

同样,这几个月来一直运行良好,但在 2014 年 8 月 1 日才开始出现问题。

通过 update.log,我看到 2 个文件有 404。显然,既然有 404,为什么工作失败是有道理的。

有人有什么解决方法吗?由于这是在播放前构建时发生的,因此我似乎无法设置任何配置。我无法通过我们构建服务器上的 ~/.sbt/repositories 管理 repos,因为它们是短暂的。

编辑 8 月 2 日 10:40a EDT

又挖了一点,看起来像

http://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/compile/0.13.0/ivys/ivy.xml

依赖于

<override org="org.scala-lang" module="scala-library" matcher="exact" rev="2.10.2"/>
<override org="org.scala-lang" module="scala-compiler" matcher="exact" rev="2.10.2"/>

但那些不再存在于任何 ivy 存储库中。

【问题讨论】:

希望这应该很快得到解决,但在那之前:scala 2.10.2 仍然可以在 sonatype 发布 repo 中使用。将Resolvers += Resolver.sonatypeRepo("releases") 添加到/project/plugins.sbt(可能还有/build.sbt,取决于您的项目)应该可以解决这个问题。 刚发现也有报道,但请注意 resolvers 的大小写 - 它以小写 r 开头。 @JacekLaskowski 哦,对,谢谢。我编辑了票。 【参考方案1】:

我刚刚发现两个地方报告和解决了不同的问题。

更改解析器以包含 Sonatype Releases

在SI-8772 Builds relying on Scala 2.10.2 artifact in Maven are failing 中有描述,解决方案是将以下内容添加到您的构建中:

resolvers += Resolver.sonatypeRepo("releases")

手动下载所需文件

Apache Spark users mailing list 中也报告了缺少 Scala 2.10.2 库的问题,解决方案是手动下载所需文件,如下所示:

$ cd ~/.ivy2/cache/org.scala-lang/
$ mkdir -p scala-library && cd scala-library
$ wget https://raw.githubusercontent.com/peterklipfel/scala_koans/master/ivyrepo/cache/org.scala-lang/scala-library/ivy-2.10.2.xml
$ wget https://raw.githubusercontent.com/peterklipfel/scala_koans/master/ivyrepo/cache/org.scala-lang/scala-library/ivydata-2.10.2.properties
$ mkdir -p jars && cd jars
$ wget https://github.com/peterklipfel/scala_koans/raw/master/ivyrepo/cache/org.scala-lang/scala-library/jars/scala-library-2.10.2.jar

归结为将丢失的文件从另一个存储库下载到您的 Ivy2 本地缓存。对scala-compiler 做同样的事情,你应该会没事的。

【讨论】:

以上是关于为啥 sbt 报告缺少 Scala 2.10.2 的库(自 8 月 1 日起)?的主要内容,如果未能解决你的问题,请参考以下文章

基本目录中缺少 build.scala

为啥 sbt 为 import scala.swing 给出“对象 swing 不是包 scala 的成员”?

为啥 sbt 因 sbt.ResolveException 失败:Spark 2.0.0 和 Scala 2.9.1 的未解决依赖关系?

由于缺少 Ivy 模块,无法创建 IntelliJ Scala 项目

为啥在使用“sbt it:test”时不执行 Play/Scala 项目中的集成测试?

使用 -Xfatal-warnings 但忽略弃用警告/使用 SBT 的自定义报告器