Я разрабатываю несколько модулей с зависимостями между ними и хотел бы работать с ними вместе в одном проекте IDEA. Я использую sbt-idea для генерации проектов IDEA из определений сборки sbt, что прекрасно работает для отдельных проектов. Однако в случае с несколькими модулями вещи, которые я до сих пор пробовал, не совсем работают:
Используйте sbt-idea для создания файла IDEA .iml для каждого модуля независимо ; затем создайте основной проект IDEA с нуля и добавьте в него эти модули. Это делает исходные тексты модулей доступными для редактирования в одном и том же окне, но зависимости между ними не отслеживаются (поэтому попытка перейти от какого-либо источника в проекте foo к чему-то в bar приводит меня к импортированной версии библиотеки bar , а не к локальным источникам).
Использование 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 с отслеживаемыми зависимостями для удобного редактирования. Как мне это сделать? Спасибо!