为什么sbt会继续下载我的快照依赖项?

时间:2016-09-15 15:49:00

标签: scala sbt dependency-management ivy

我有一个依赖于两个快照依赖项的SBT项目。每次我构建它,它都会转到远程存储库以获取依赖项。即使我设置了offline := true,也是如此。

当我看看它是如何尝试解析本地依赖关系时,构建表示它正在查看“本地”,即~/.ivy2/local/... - 这是一个不存在的目录。

罐子在~/.ivy2/cache/...,这是SBT在从远程服务器提取依赖关系时下载它们的地方。

我搜索了我的.sbt和.scala构建文件,字符串“local”没有出现在存储库或缓存中。

SBT版本为0.13.11,针对scala 2.11.8。

为什么SBT这样做,我怎样才能看到缓存的罐子?

2 个答案:

答案 0 :(得分:0)

如果您想阻止SBT尝试从官方存储库下载,您只需创建一个文件project/offline-repositories

[repositories]
  mirror-central: file:////nexus/central
  mirror-maven-central-org: file:////nexus/maven-central-org
  ...

/nexus/central/nexus/maven-central-org应包含离线所需内容的(部分)镜像

然后使用配置的sbt属性调用sbt.repository.config

-Dsbt.override.build.repos=true \
-Dsbt.repository.config=./project/offline-repositories

供参考:

修改

如果您想使用~/.m2缓存:

[repositories]
  mirror-central: file:////home/XXXXX/.m2/repository
  mirror-maven-central-org: file:////home/XXXXX/.m2/repository
  ...

答案 1 :(得分:0)

这显然是因为在我的Ivy缓存中我有一个名为〜/ .ivy2 / cache / com.xxx / xxx-utils / ivy-2.3.2-SNAPSHOT.xml.original的文件,该版本正在尝试并失败要解析。我不确定这个文件来自哪里;可以想象,它是在很久以前手动放置的。