Я разрабатываю несколько модулей с зависимостями между ними и хотел бы работать со всеми ними вместе в одном проекте 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 с отслеживаемыми зависимостями для удобного редактирования. Как мне это сделать? Благодаря!