Как обновить обновленные артефакты зависимостей 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/
)...
Любая помощь очень ценится!
Ответы
Ответ 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'.