У меня есть набор слабо связанных компонентов, где некоторые из них зависят от других. Для конкретности давайте предположим, что у нас есть компоненты "common", "a" и "b" . "common" не имеет никаких зависимостей, но все остальные проекты используют "общие". Кроме того, "а" зависит от "b" . Все компоненты написаны в Scala, и я хотел бы использовать sbt для их создания.
Было бы неплохо иметь следующие свойства:
- Несколько человек работают над разными проектами, поэтому мы не хотим иметь один репозиторий, а скорее один репозиторий для каждого проекта.
- Построение проекта должно быть простым, и все зависимости должны быть построены автоматически (при необходимости). То есть, если я изменяю "общий", а затем строю "b" , это должно сначала построить "общий", а затем продолжить сборку "b" .
- Уметь иметь все проекты в среде IDE, так что рефакторинг и подобные IDE-задачи будут работать правильно, и все затронутые проекты будут изменены правильно.
Насколько я вижу, есть две возможности иметь зависимости такого рода в sbt; либо мы используем подпроекты, либо используем управляемую зависимость (которая перемещается где-то, например, локально). Тем не менее, похоже, что оба этих варианта не предусматривают (1) или (2) выше. В частности,
- Использование подпроектов заставляет нас использовать один репозиторий, потому что весь подпроект должен быть в подкаталогах основного проекта.
- Публикация проектов локально и использование управляемых зависимостей громоздка, поскольку изменение "общего", а затем построение "b" только подбирает изменения в "общем", если этот проект был создан и опубликован первым. Я вижу, что управляемые зависимости полезны для многих случаев, но для нашего конкретного случая использования они, похоже, не работают хорошо. Мы часто работаем над несколькими проектами и одновременно меняем их. По этой причине публикация часто кажется слишком сложной.
Нет ли способа сказать, что проект sbt зависит от другого sbt-проекта в определенном (относительном) местоположении и имеет значение sbt, когда нужно построить зависимость?