sbt、常春藤、离线工作和怪异

sbt, ivy, offline work, and weirdness

我正在尝试(再次)离线处理 sbt 项目。事情似乎几乎没问题,但有些奇怪的事情让我感到困惑。这是我注意到的:

我已经创建了一个空的 sbt 项目,并且正在考虑 build.sbt 中的以下依赖项:

name := "sbtSand"

version := "1.0"

scalaVersion := "2.11.7"

libraryDependencies ++= Seq(
    "joda-time" % "joda-time" % "2.9.1",
    "org.apache.spark" %% "spark-core" % "1.5.2"
)

我已经在线构建了项目,并且可以在 [userhome]/.ivy2/cache 中看到所有包。该项目构建良好。然后我关闭 wifi,sbt clean 并尝试构建。构建失败。我注释掉了 spark 依赖项(保留 joda-time 依赖项)。还在离线,我运行 sbt编译。该项目构建良好。我将 spark 依赖项放回去,然后 sbt clean。它再次无法构建。我重新上线。我可以重新建造。

失败构建的 sbt 输出如下:https://gist.github.com/ashic/9e5ebc39ff4eb8c41ffb

其中的关键部分是:

[info] Resolving org.apache.hadoop#hadoop-mapreduce-client-app;2.2.0 ... [warn] Host repo1.maven.org not found. url=https://repo1.maven.org/maven2/org/apache/hadoop/hadoop-mapreduce-client-app/2.2.0/hadoop-mapreduce-client-app-2.2.0.pom [info] You probably access the destination server through a proxy server that is not well configured.

有趣的是,sbt 正在设法使用 ivy 缓存中的 joda-time,但是对于 spark-core 包(或者更确切地说是它的依赖项),它想要连接到 internet 并且构建失败。任何人都可以帮助我理解这一点,以及我可以做些什么才能在完全离线的情况下让它工作吗?

看来这个问题在 0.13.9 中已经解决了。我用的是 0.13.8。 [windows 的 0.13.9 msi 似乎给了我 0.13.8,而 0.13.9.2 msi 安装了正确的版本。现有项目需要在构建属性中手动更新到 0.13.9。]