【问题标题】:How do I refresh updated Git dependency artifacts in SBT?如何在 SBT 中刷新更新的 Git 依赖项?
【发布时间】:2012-02-10 11:13:45
【问题描述】:

根据我在this question here 上的回答,我已将 SBT (0.11.0) 配置为将 GitHub 项目作为依赖项引入。

它工作正常,只是我似乎无法让 SBT 在更新时重新编译我的 Git 依赖项。换句话说:如果我对依赖项进行更新,推送到 Git 并重新加载我的项目的 SBT 并运行package,那么 SBT 在编译我的项目时不会重新编译外部 Git 依赖项。

我尝试在我的 Git 依赖项中创建一个新分支(例如,forcenew)并在我的 SBT 项目配置中更新该分支以使用它:

lazy val depProject = RootProject(uri("git://github.com/me/dep-project.git#forcenew"))

但即使这样也不会强制刷新。我有点难过——我什至找不到 SBT 将 Git 项目放在哪里来编译它(它似乎不在 ~/.sbt/~/.ivy2/ 中)...

非常感谢任何帮助!

【问题讨论】:

  • 编译好的github项目存在于~/.sbt/staging/ ?
  • 我在 -SNAPSHOT Ivy 依赖项上遇到了类似的问题,只有在 sbt 中运行 clean 后才重新解决。 clean 是否也解决了 git 依赖问题?
  • 谢谢詹姆斯,健二。 clean 似乎不起作用 - rm -rf ~/.sbt/staging/ 完成了这项工作,但显然是核选项......
  • 我为此开了一个问题:github.com/harrah/xsbt/issues/335

标签: scala sbt


【解决方案1】:

发件人:https://github.com/sbt/sbt/issues/335

这应该在 0.12.0 中修复,只需调用“sbt update”

它已在 0.12.0 中修复,所以 sbt update 就足够了,but got back in 13.0 -- 现在,您必须手动清除 ~/.sbt/staging/ 的依赖关系

【讨论】:

    【解决方案2】:

    你可能想清除~/.sbt/staging/

    【讨论】:

    • 为什么它不是自动的?
    • 如果您在创建项目时启用自动导入,我认为 Intellij 会注意问题......不确定
    【解决方案3】:

    一个可以添加到 build.sbt 的快速技巧:

    def removegit = Command.command("removegit"){state =>
      val home = sys.env("HOME")
      val k = ("rm -rf "+ home + "/.sbt/0.13/staging/").!
      state
    }
    
    commands ++= Seq(removegit)
    

    然后sbt removegit 将擦除该目录。这并没有做任何聪明的事情,比如检查提交,这将是一个很好的升级......回购存储在我机器上的~/.sbt/0.13/staging/,你可能需要调整它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-29
      • 1970-01-01
      • 2010-09-13
      • 2016-02-09
      • 2016-12-18
      • 1970-01-01
      • 2013-06-20
      • 2018-07-03
      相关资源
      最近更新 更多