Tworzę kilka modułów z zależnościami między nimi i chciałbym pracować z nimi wszystkimi w jednym projekcie IDEA. Używam sbt-idea do generowania projektów IDEA z definicji kompilacji sbt, co świetnie sprawdza się w przypadku indywidualnych projektów. Jednak w przypadku wielu modułów rzeczy, których próbowałem do tej pory, nie działają:
Użyj sbt-idea do wygenerowania pliku IDEA .iml dla każdego modułu niezależnie ; następnie utwórz od podstaw główny projekt IDEA i dodaj do niego te moduły. To sprawia, że wszystkie źródła modułów są edytowalne w tym samym oknie, ale zależności między nimi nie są śledzone (więc próba nawigacji z jakiegoś źródła w projekcie foo do czegoś w pasku przenosi mnie do zaimportowanej wersji biblioteki bara , a nie do źródeł lokalnych ).
Użyj kompilacji wielu projektów SBT (zwanych również podprojektami) , gdzie Build.scala projektu nadrzędnego zawiera takie rzeczy, jak:
lazy val foo = Project(id = "foo", base = file("foo"))
lazy val bar = Project(id = "bar", base = file("bar")) dependsOn(foo)
To prawie działa, ponieważ sbt-idea generuje główny projekt IDEA z zależnościami między śledzonymi podprojektami. Istnieją jednak dwa zastrzeżenia:
- Wydaje się, że ograniczeniem SBT jest to, że podprojekty muszą znajdować się w podkatalogach projektu głównego (tj.
file("../foo")
Jest to niedozwolone). To nie jest to, czego chcę (co jeśli moduł - taki jak pakiet „utils” lub „commons” - jest używany w dwóch różnych głównych projektach?), Ale mogę z tym żyć. - Jeden z moich podprojektów ma własne podprojekty; Nie jestem pewien, czy sam sbt radzi sobie z tymi zagnieżdżonymi projektami poprawnie, ale w każdym razie są one ignorowane przez sbt-idea. Oczywiście potrzebuję zagnieżdżonych podprojektów, które mają być uwzględnione rekurencyjnie w projekcie głównym.
Podsumowując: chciałbym zebrać moduły, które mogą już mieć podprojekty w jeden duży projekt IDEA ze śledzonymi zależnościami w celu wygodnej edycji. Jak mogę to zrobić? Dzięki!