Softwareprojekte mit überschaubarer bzw. gekapselter Funktionialität lassen sich ohne Probleme in einem Repository verwalten. Sobald jedoch mehrere Bereiche einer SW-Archtitektur tangiert werden, sollte die jeweilige Funktionalität ausgelagert werden. Das Hinzufügen mehrerer Repositories zu einem IntelliJ-Projekt erläutere ich in diesem Artikel.
Voraussetzung
Die Grundlage ist ein bereits angelegtes Projekt (Java) mit der Entwicklungsumgebung IntelliJ IDEA Community Edition v2017.3.5.
Im Menü unter File > Project Structure ist beim Erstellen des Projekts im Abschnitt Modules standardmäßig ein Modul angelegt worden.
Innerhalb eines Moduls können einzelne Ordner als Sources, Test, Resource, Test Resources oder Excluded deklariert werden. Auf der rechten Seite sind die Pfade zu den beschriebenen Ordnern aufgelistet, falls eine Zuordnung besteht.
Nun besteht die Möglichkeit, Quelldateien eines fremden Projekts einzubinden. Hierzu muss über Add Content Root das Wurzelverzeichnis eines anderen Repositories ausgewählt werden:
Im Anschluss sollten die Unterordner entsprechend ihres Verwendungszwecks deklariert werden:
Die Verzeichnisse werden nun entsprechend ihres Zwecks markiert:
Anpassen der Run/Debug-Konfiguration
Die Anwendung kann bekanntermaßen von den Tests separiert gebaut und ausgeführt werden. Je nach Anfangsbuchstaben der eingebundenenen Projekte werden sie von IntelliJ intern alphabetisch sortiert. Das demnach erste Projekt wird als Standard-Wurzelverzeichnis gewählt und kann zu unterwünschten Fehlern führen, beispielsweise beim Ausführen der Tests: Es wird immer der target-Ordner des Projekts als Ausgabeverzeichnis für Artefakte gewählt, das als erstes im Alphabet erscheint.
Unter Run > Edit Configurations > Defaults kann das Standardverhalten dahingehend angepasst werden, dass z.B. immer der target-Ordner des Hauptprojekts als Ausgabeverzeichnis für Artefakte gewählt wird.
Um für das Ausführen von Modultests mit JUnit sicherzugehen, dass das Hauptprojekt als Ausgabeverzeichnis gewählt wird, muss der Parameter Working Directory vom Standardwert $MODULE_WORKING_DIR$ auf den Wert $MODULE_DIR$ geändert werden: