Может ли SBT обновить зависимость от git uri (всегда или по требованию)?
У меня есть следующий код 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 ответ
SBT до 0.13.2-M1 поддерживает git clone
а также git checkout
только.
git clone
используется, когда URL не содержит #
указать на ветку или коммит, например
git:file:///Users/jacek/sandbox/so/sbt-git/git-repo
git checkout
выполняется, когда URL имеет #
в URL, который указывает на ветку или коммит, например
git:file:///Users/jacek/sandbox/so/sbt-git/git-repo/#a221379c7f82e5cc089cbf9347d473ef58255bb2
Когда я commit
я сделал изменения в git-репо, мне пришлось обновить хеш коммита в build.sbt
Кроме того, чтобы изменения упоминались в проекте SBT (Val v
ниже).
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
С изменениями в git-хранилище проект SBT должен быть reload
Итак, новая проверка может быть запущена, и проект обновляется.
[root]> reload
[info] Loading global plugins from /Users/jacek/.sbt/0.13/plugins
[info] Loading project definition from /Users/jacek/sandbox/so/sbt-git/project
Cloning into '/Users/jacek/.sbt/0.13/staging/24535507588417c1c2dc/git-repo'...
Checking connectivity... done
[info] Set current project to root (in build file:/Users/jacek/sandbox/so/sbt-git/)
[root]>
Это больно, но делает свое дело (и позволяет вам отслеживать, где вы находитесь с помощью удаленного репозитория git).
Вы также можете найти Можно ли использовать мульти-проекты из GIT в качестве зависимостей SBT? полезно.