SBT可以刷新git uri依赖(总是或按需)?

时间:2014-01-16 22:59:38

标签: git sbt

我有以下sbt代码在git uri上添加插件依赖:

import sbt._

object Plugins extends Build {
  lazy val username = ("git config --global user.bitbucket" !!).trim

  lazy val root = Project("root", file(".")) dependsOn(
    uri(s"https://$username@git-repo.org/team/build.git#build_0.1")
  )
}

这样做很好,但我发现如果我对build_0.1进行更改并推动它,当我再次来到compile项目时,sbt并没有完成我所做的更改所以我有一个过时的插件。

如何让SBT始终对它所依赖的依赖关系做一个git pull?

1 个答案:

答案 0 :(得分:4)

SBT最高 0.13.2-M1 仅支持git clonegit checkout

当URL不包含git clone以指向分支或提交时,使用

#,例如

git:file:///Users/jacek/sandbox/so/sbt-git/git-repo
当URL在分支或提交的URL中具有git checkout时,执行

#,例如

git:file:///Users/jacek/sandbox/so/sbt-git/git-repo/#a221379c7f82e5cc089cbf9347d473ef58255bb2

当我commit对git repo进行更改时,我不得不更新build.sbt中的提交哈希值,以便在SBT项目中引用更改(val {{1下面)。

v

随着git存储库的更改,SBT项目必须为lazy val v = "a221379c7f82e5cc089cbf9347d473ef58255bb2" lazy val g = RootProject(uri(s"git:file:///Users/jacek/sandbox/so/sbt-git/git-repo/#$v")) lazy val root = project in file(".") dependsOn g ,以便可以运行新的结帐并刷新项目。

reload

这很痛苦,但有诀窍(让你跟踪远程git仓库的位置)。

您可能还会发现Can multi-projects from GIT be used as SBT dependencies?有用。