Estoy desarrollando varios módulos con dependencias entre ellos y me gustaría trabajar con todos juntos en un proyecto IDEA. Estoy usando sbt-idea para generar proyectos IDEA a partir de las definiciones de compilación de sbt, lo que funciona muy bien para proyectos individuales. Sin embargo, en el caso de varios módulos, las cosas que he probado hasta ahora no funcionan del todo:
Utilice sbt-idea para generar un archivo .iml IDEA para cada módulo de forma independiente ; luego cree un proyecto IDEA maestro desde cero y agregue esos módulos. Esto hace que todas las fuentes del módulo sean editables en la misma ventana, pero las dependencias entre ellas no se rastrean (por lo que intentar navegar desde alguna fuente dentro del proyecto foo a algo en bar me lleva a la versión de la biblioteca importada de bar , no a las fuentes locales ).
Use compilaciones de proyectos múltiples de sbt (también conocidas como subproyectos) , donde Build.scala del proyecto principal contiene cosas como:
lazy val foo = Project(id = "foo", base = file("foo"))
lazy val bar = Project(id = "bar", base = file("bar")) dependsOn(foo)
Esto casi funciona, ya que sbt-idea genera un proyecto IDEA maestro con las dependencias entre los subproyectos rastreados. Sin embargo, hay dos advertencias:
- Parece ser una restricción de sbt que los subproyectos deben vivir en subdirectorios del proyecto principal (es decir,
file("../foo")
no está permitido). Esto no es realmente lo que quiero (¿y si un módulo, como un paquete "utils" o "commons", se usa en dos proyectos maestros diferentes?), Pero puedo vivir con él. - Uno de mis subproyectos tiene sus propios subproyectos; No estoy seguro de si el propio sbt se ocupa de estos proyectos anidados correctamente, pero en cualquier caso sbt-idea los ignora. Obviamente, necesito que los subproyectos anidados se incluyan de forma recursiva en el proyecto principal.
Para resumir: me gustaría recopilar módulos que ya pueden tener subproyectos en un gran proyecto de IDEA con dependencias rastreadas para una edición conveniente. ¿Cómo puedo hacerlo? ¡Gracias!