Подтвердить что ты не робот

Как обновить обновленные артефакты зависимостей Git в SBT?

Я настроил 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/)...

Любая помощь очень ценится!

4b9b3361

Ответ 1

От: https://github.com/sbt/sbt/issues/335

это должно быть исправлено в 0.12.0, просто вызовите "sbt update"

Это было исправлено в 0.12.0, поэтому sbt update достаточно, но вернулось в 13.0 - пока вы должны стереть зависимость от ~/.sbt/staging/ вручную

Ответ 2

Вероятно, вы хотите очистить ~/.sbt/staging/

Ответ 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/ на моей машине, вам может потребоваться настроить это.

Ответ 4

Попробуйте удалить конкретный проект, который вы хотите перезагрузить с ~/.ivy2/cache/, а затем выполните 'sbt update'.