首页 文章

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

提问于
浏览
1

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

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

这些 jar 在 ~/.ivy2/cache/... 中,这是SBT在从远程服务器获取依赖关系时下载它们的地方 .

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

SBT版本为0.13.11版,针对scala 2.11.8 .

为什么SBT会这样做,如何让它看到缓存的 jar 呢?

2 回答

  • 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.repository.config 属性的情况下调用 sbt

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

    以供参考:

    EDIT

    如果要使用 ~/.m2 缓存:

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

    这显然是因为在我的常 Spring 藤缓存中我有一个名为〜/ .ivy2 / cache / com.xxx / xxx-utils / ivy-2.3.2-SNAPSHOT.xml.original的文件,该版本正在尝试并且无法解析 . 我不确定这个文件来自哪里;可以想象,很久以前就把它放在那里 .

相关问题