SBT имеет функцию управления зависимостями проекта, где вы можете напрямую ссылаться на существующий проект github.SBT выполняет пользовательскую задачу при запуске
val projectA = RootProject(uri("git://github.com/...."))
val projectB = Project("projectB", file(".")) dependsOn(project)
К сожалению, из-за существующую ошибку - любые изменения в зависимом проекта (Projecta) не будут отражены в проекте, который использует эту зависимость (projectB), даже если вы звоните sbt update
.
https://github.com/sbt/sbt/issues/1284
Это не выглядит, как они будут это исправить в ближайшее время.
Но есть обходной путь: How do I refresh updated Git dependency artifacts in SBT? Удаление ~/.sbt/staging/
помогает. По-видимому, это удаление должно происходить на ранней стадии загрузки проекта.
Я создал простую задачу для удаления и определил ее как зависимость от задачи update
- но похоже, что слишком поздно и не работает должным образом.
[info] Loading project definition from projectB
// next 4 stages are skipped if it's already cloned.
// Cloning into ... projectA
// [info] Loading project definition from projectA
// [info] Updating projectA
// [info] Done updating.
[info] Updating projectB <<<--- where the removal is happening, too late...
На что я могу положиться?