2017-02-16 2 views
0

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... 

На что я могу положиться?

ответ

0

Что касается знания, я нашел следующее решение. Я только определенный метод в моем build.sbt, который возвращает пустой Seq и выполнить необходимое удаление, и я непосредственно ссылаться на него в определении проекта, где определены параметры:

lazy val commonSettings = doRemove ++ Seq(... other settings. 

Определенно, не лучший подход практики, но делает работу.

Смежные вопросы