Может ли 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? полезно.

Другие вопросы по тегам