Как управлять несколькими взаимозависимыми модулями с SBT и IntelliJ IDEA?

Я разрабатываю несколько модулей с зависимостями между ними и хотел бы работать с ними вместе в одном проекте IDEA. я используюSBT-идея генерировать проекты IDEA из определений сборки sbt, что прекрасно работает для отдельных проектов. Однако в случае с несколькими модулями вещи, которые я до сих пор пробовал, не совсем работают:

Используйте sbt-idea для создания файла IDEA .iml для каждого модуля независимо.; затем создайте основной проект IDEA с нуля и добавьте в него эти модули. Это делает исходные тексты модулей доступными для редактирования в одном и том же окне, но зависимости между ними не отслеживаются (поэтому при попытке перейти из какого-либо источника в пределахFoo проецировать на что-то вбар берет меня к импортированной версии библиотекибар, а не из местных источников).

Используйте SBTмультипроектные сборки (так называемые подпроекты)где Build.scala родительского проекта содержит такие вещи, как:

lazy val foo = Project(id = "foo", base = file("foo"))
lazy val bar = Project(id = "bar", base = file("bar")) dependsOn(foo)

Это почти работает, так как sbt-idea генерирует основной проект IDEA с отслеживаемыми зависимостями между подпроектами. Однако есть два предостережения:

Кажется, есть ограничение sbt, что подпроекты должны жить в подкаталогах главного проекта (т.е.file("../foo") не допускается). Это на самом деле не то, что я хочу (что, если модуль - такой как пакет "utils" или "commons" - используется в двух разных главных проектах?), Но я могу жить с этим.Один из моих подпроектов имеет свои собственные подпроекты; Я не уверен, правильно ли работает sbt с этими вложенными проектами, но в любом случае они игнорируются sbt-idea. Очевидно, что мне нужно, чтобы вложенные подпроекты рекурсивно включались в главный проект.

Подводя итог: я хотел бы собрать модуликоторые уже могут иметь подпроекты в один большой проект IDEA с отслеживаемыми зависимостями для удобного редактирования. Как я могу это сделать? Спасибо!

Ответы на вопрос(2)

Ваш ответ на вопрос