我有以下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?
答案 0 :(得分:4)
SBT最高 0.13.2-M1 仅支持git clone
和git checkout
。
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?有用。