Wie man mehrere voneinander abhängige Module mit SBT und IntelliJ IDEA verwaltet?
Entwickle ich diverse Module mit Abhängigkeiten zwischen Ihnen, und würde gerne mit Ihnen arbeiten alle zusammen in einem IDEA-Projekt. Ich bin mit sbt-Idee zu generieren, IDEE, Projekte aus dem sbt build-Definitionen, die funktioniert gut für einzelne Projekte. Bei der multiple-Modul jedoch der Fall, kann die Dinge, die ich bisher ausprobiert habe nicht ganz so funktioniert:
Verwenden sbt-Idee zu generieren, eine IDEE .iml-Datei für jedes Modul unabhängig; dann erstellen Sie ein master-IDEE Projekt von Grund auf ein add, dass diese Module. Dies macht das Modul Quellen, die alle bearbeitet werden, in der gleichen Fenster, aber die Abhängigkeiten zwischen Ihnen werden nicht verfolgt (so versucht, navigieren Sie von einer Quelle innerhalb der foo Projekt, um etwas in bar nimmt mich auf die importierte library-version von barnicht die lokalen Quellen).
Verwenden sbt multi-Projekt-builds (aka Teilprojekte)wo das übergeordnete Projekt zu Bauen.scala enthält Dinge wie:
lazy val foo = Project(id = "foo", base = file("foo"))
lazy val bar = Project(id = "bar", base = file("bar")) dependsOn(foo)
Diese fast funktioniert, dass sbt-Idee erzeugt eine master-IDEE Projekt mit den Abhängigkeiten unter den Teilprojekten verfolgt. Es gibt jedoch zwei Vorbehalte:
- Es scheint zu sein, ein sbt Einschränkung, dass die Teilprojekte Leben müssen, in Unterverzeichnissen des master-Projekts (D. H.,
file("../foo")
ist nicht erlaubt). Das ist nicht wirklich das was ich will (was passiert, wenn ein Modul--wie ein "utils" oder "commons" - Paket--in zwei verschiedenen master-Projekte?) aber ich kann mit Ihr Leben. - Einer meiner Teilprojekte hat seine eigenen Teilprojekte; ich bin mir nicht sicher, ob sbt selbst beschäftigt sich mit dieser verschachtelt ist, dass Projekte richtig, aber in jedem Fall werden Sie ignoriert, indem sbt-Idee. Offensichtlich muss ich verschachtelte Unterprojekte einbezogen werden rekursiv in das master-Projekt.
Zusammen zu fassen: ich würde gerne sammeln-Module die bereits über die Teilprojekte in eine große IDEE-Projekt mit verfolgt Abhängigkeiten zur bequemen Bearbeitung. Wie kann ich es tun? Danke!
InformationsquelleAutor der Frage David Soergel | 2012-01-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit sbt 13.5 und intellij 13.x, können Sie angeben, inter-Projekt-Abhängigkeit mit relativen Pfad, der mit einem Bauen.scala.
Angenommen, Sie haben zwei Projekte, ein core-Projekt commons und ein weiteres Projekt foo, beide Leben in einem gemeinsamen Verzeichnis code/
diesen code-snippet insde Bauen.scala
Generiert IntelliJ-Projekt via sbt durch
sbt gen-idea
InformationsquelleAutor der Antwort user2829759
Den Ansatz mit multi-Projekt-build ist die richtige. Sie können eine geschachtelte Struktur von Teilprojekten von beliebiger Länge, aber Sie können nicht ein Modul, mehrere übergeordnete Projekte. Das macht absolut Sinn, und in Maven geschieht das gleiche.
Der Grund ist, dass es hart werden würde, um das gleiche Modul in mehreren Projekten und halten die Quellen synchronisiert. Ein normaler workflow ist der folgende:
Wenn Sie möchten, ein Modul geladen, die nicht zum aktuellen Projekt gehören im inneren Vorstellung, ist dies jedoch möglich, wie Sie können, fügen Sie diese als externes Modul in den Arbeitsbereich ein:
InformationsquelleAutor der Antwort Edmondo1984