【问题标题】:sbt-assembly not found when building Spark 0.5构建 Spark 0.5 时找不到 sbt-assembly
【发布时间】:2020-01-23 17:14:00
【问题描述】:

我正在尝试构建 Spark 的 0.5 分支,但它会引发错误:

sbt.ResolveException:未解决的依赖项:com.eed3si9n#sbt-assembly;0.8.3:未找到

因此,我从dl.bintray.com 手动下载ivysjars,并将它们放入我本地的.ivy 文件夹中。

具体来说,我在com.eed3si9n下创建了一个sbt-assembly,并将文件重命名为:

但是,这不起作用。正确的解决方案是什么?

【问题讨论】:

  • 我很好奇你为什么需要这么旧的 Spark 版本?
  • @JacekLaskowski bcz 我正在尝试完全理解它的源代码,并且 0.5 分支处于其初始形式。因此,我认为这是一个好的开始。
  • 玩得开心!我对结果有点怀疑。我宁愿从最新最好的开始,即使代码库可能是压倒性的。基础并没有太大变化(即使发生了变化,也更值得知道现在的情况不是当时的情况,不是吗?)。让我离线讨论它。

标签: scala apache-spark sbt


【解决方案1】:

根据project/build.properties,Spark branch-0.5 使用 sbt 0.11.3,所以它已经很老了。

sbt 社区存储库位置

project/plugins.sbt 中有一个错误。它指向scalasbt.artifactoryonline.com,但它应该指向repo.scala-sbt.org

$ git diff
diff --git a/project/plugins.sbt b/project/plugins.sbt
index 63d789d0c1..70dcfdba00 100644
--- a/project/plugins.sbt
+++ b/project/plugins.sbt
@@ -1,7 +1,7 @@
 resolvers ++= Seq(
   "sbt-idea-repo" at "http://mpeltonen.github.com/maven/",
   Classpaths.typesafeResolver,
-  Resolver.url("sbt-plugin-releases", new URL("http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases/"))(Resolver.ivyStylePatterns)
+  Resolver.url("sbt-plugin-releases", new URL("http://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/"))(Resolver.ivyStylePatterns)
 )

JDK 1.6

要运行旧版本的 sbt,必须使用旧 JDK。在这种情况下,JDK 1.6。然而,在 macOS 上,JDK 1.6 的 JLine 存在问题,所以我不得不禁用 JLine。

$ jenv shell 1.6
$ java -version
java version "1.6.0_65"
...
$ sbt/sbt -Djline.terminal=jline.UnsupportedTerminal

这应该会启动 sbt shell。一旦出现,输入:

> package

【讨论】:

  • 谢谢。由于 0.5 分支的源代码规模要小得多,我认为阅读基于该分支的源代码是件好事。顺便说一句,我怎样才能为不同版本的Spark 确定正确的JDK 版本?主要取决于使用的Scala 版本吗?
  • 基本上。您可以根据日期猜测稳定的 JDK 版本。 JDK 1.7 于 2011 年问世,所以也许它也可以工作,但 JDK 1.6 会是一个更安全的选择。
猜你喜欢
  • 2015-08-07
  • 2021-12-27
  • 1970-01-01
  • 2015-01-16
  • 2016-06-15
  • 2018-05-27
  • 2018-11-18
  • 2019-11-28
  • 1970-01-01
相关资源
最近更新 更多