IntelliJ IDEA: Projekte, Gruppen, Module

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

Registriere dich um viele Vorteile zu genießen! Weniger Werbung, bessere Kommunikation und vieles mehr!

  • Korrektes Projekt-Management funktioniert in IntelliJ IDEA einfach anders! Mit seinen Interpretationen von "Projekten", "Gruppen" und "Modulen" unterscheidet es sich deutlich von dem, was man beispielsweise von Eclipse gewohnt sein dürfte. Wie sich die Begriffe im Umgang mit IntelliJ IDEA definieren, und wie daraus mehr Effizienz im Umgang mit den eigenen Projekten gewonnen werden kann ist innerhalb dieses Eintrages umfangreich und verständlich zusammengefasst.

    Termini

    IntelliJ IDEA setzt für die Benennung ihrerer hierarchischen Elemente auf eine etwas unkonventionelle Semantik. In sich ist die Benennung jedoch durchaus schlüssig und sollte daher nicht von vornherein verteufelt werden. Denn entgegen des Anscheins, hat die von IntelliJ IDEA präferierte Benennung durchaus ihre Vorteile.

    Projekt

    Ein Projekt stellt in IntelliJ IDEA keinesfalls nur "ein Repository" dar, sondern ist viel mehr das Äquivalent zum Eclipse'schen "Workspace"[1]. Ein Projekt beinhaltet also Idealerweise alle zumindest distanziert zusammenhängenden Anwendungen und Applikationen. Das bedeutet, ich habe zum Beispiel eine Mappe (Projekt) für die Schule, eine Mappe für Server1 an dem ich tätig bin, eine Mappe für Server2 an dem ich mal tätig war, und so weiter.

    Wichtig hierbei, ist einfach sich darüber klar zu werden, dass Projekte - neben gemeinsamer Codestyles und Maven-Präferenzen - einfache "Ordnungs-Einheiten" sind, also zum Gruppieren von Anwendungen dienen. Projekte können erstellt werden, indem man zu File > New > Project navigiert. Hier wird man dann durch den interaktiven "Wizard" geführt. Für die besten Ergebnisse empfehle ich ein leeres Java-Projekt zu erstellen (nicht Maven) und dann für das Importieren/Erstellen von Code, mit der Anleitung unter "Modul" fortzufahren. Vorher sollte ggf. noch das Standardmodul (Gleichnamig mit dem Projekt) gelöscht werden, da dieses für den regulären Aufbau nicht weiter benötigt wird.

    Gruppe

    Eine Gruppe ist ein virtuelles Element. Gruppen dienen tatsächlich nur zum Verändern der Darstellung von Modulen, und verändern an der tatsächlichen Ordner-Struktur und Gruppierung rein gar nichts. Sie erweisen sich aber - beispielsweise bei der Einteilung von Spigot, BungeeCord und Website-Plugins - als überaus nützlich. Abrufbar sind die Gruppen über File > Project Structure > Modules > Rechtsklick auf ein Modul > Move Module to Group.

    Modul

    Module sind das Herzstück der Projekte. Ein Modul stellt tatsächlich eine Code-Einheit eines Projekts dar. Module sind in IntelliJ IDEA das, was in Eclipse "Projekt" genannt wird. Hier ist es ein wenig hinderlich, dass Module unterschiedlich groß sein können: Ein Modul kann ein vollständiges Plugin sein, aber auch ein "Teil" eines Plugins - Wie zum Beispiel ein Framework oder die einzelnen Untermodule hierfür. Dadurch sind Gruppen zur effizienten Organisation von Modulen unerlässlich.

    Erstellung

    Ein Modul zu erstellen ist in IntelliJ IDEA ebenso einfach, wie es das Erstellen von Projekten ist. Der Wizard hierfür dürfte ebenfalls vertraut sein, es ist nämlich der zweite Teil des Projekt Wizards wo (ebenfalls) ein Modul für das Projekt erstellt wird.

    Für Diejenigen unter euch, die sich noch nicht ausreichend mit der Erstellung von Projekten und Modulen beschäftigt haben, hier eine Kurzanleitung: Navigiere zu File > Project Structure > Modules > Plus (Oben Links) > New Module. Dort kannst du dann über den Wizard ein Modul anlegen.

    Import

    Ein Modul kann man über viele Quellen importieren. Ich stelle hier genauer den Import über ein VCS (Am Beispiel von Git) dar (Sollte der Ordner schon vorhanden sein, bitte mit dem nächsten Absatz beginnen). Hierfür wird zunächst über VCS > Checkout from Version Control > Git navigiert, anschließend wird im Menü neben der Repository URL und dem automatisch generierten Directory Name auch ein Parent Directory angegeben. Für das hier beschriebene Setup sollte dies der Ordner des Projektes sein, damit das Modul also IM Projekt-Ordner liegt. Danach wird durch "Clone" bestätigt. Während des Clonings wird die Frage darüber erscheinen, ob wir hierfür ein neues Projekt erstellen wollen - Die Antwort ist Nein!

    Anschließend navigieren wir zu File > Project Structure > Modules > Plus (Oben Links) > Import Module und wählen den gerade heruntergeladenen Ordner aus. In dem Fenster, das sich danach öffnet, sollte es für gewöhnlich genügen "Create module from existing sources" auszuwählen, dies klappte bei mir in der Vergangenheit aber häufig nicht mit Maven, weshalb ich Maven/Gradle-Nutzern nahelegen würde die andere Option "Import module from external model" zu wählen, und dort das Build/Execution-Tool ihres Vertrauens zu wählen.

    Die folgenden Einstellungen müssen individuell abgewägt werden, weshalb ich hierzu leider nur wenig sagen kann. Wichtig ist es jedenfalls die entsprechenden Sources auch für den Import auszuwählen. Sobald dies nun alles abgeschlossen ist, wird in den meisten fällen (leider) die Content-Root-Zuweisung nicht ganz richtig sein. Hier sollte also stattdessen lieber manuell nachgebessert werden. Im Idealfall steht der Content-Root auf dem Ordner zum Modul (Also zum Beispiel "C:\Users\Username\Documents\IntelliJ\Projektname\BeispielPlugin"). Am Beispiel von Maven sieht dies bei mir so aus:


    (Durch einen Klick vergrößert sich das Bild)

    Danach wird die Projektstruktur durch einen Klick auf "OK" gespeichert. Nun kann das Modul Links im "Project"-Seitenleisten-Bereich gesehen und bearbeitet werden. Das Projekt ist nun ein "VCS-Multiroot"-Projekt und bei den Commits, Pushes und Pulls werden daher auch die anderen Module intelligent berücksichtigt. Auch Branches können individuell ausgewählt werden.

    VCS-Verknüpfung

    Manchmal ist es gewünscht auch im Nachhinein eine VCS-Verknüpfung herzustellen/einzurichten. Hierfür navigieren wir zu File > Settings > Version Control und achten dort auf die Auflistung der Verzeichnisse und deren Version-Control-Systeme. Durch das Plus rechts können weitere VCS-Roots hinzugefügt werden, durch das Minus bestehende Ordner aus dem VCS ausgeklinkt werden. Es ist jedoch zu beachten, dass das hinzufügen/ausklinken nur für IntelliJ IDEA gilt und ein Git-Repository hierdurch nicht beeinflusst wird, beziehungsweise ein Ordner, der vorher kein Repository war auch nachher keins sein wird. Es müssen also die manuellen Schritte zum Auflösen/Kreieren eines Repositories außerhalb von IntelliJ IDEA dennoch getätigt werden.

    Sobald das Repository nun aber eingeklinkt ist, wird es bei den IntelliJ IDEA VCS-Interaktionen (Commit, Pull, Push, History, etc) berücksichtigt. VCS-Roots IN anderen VCS-Roots sind hierbei kritisch, weshalb das Projekt selbst in keinem Fall ein VCS-Root sein sollte!

    Remote Repositories und Branches müssen wieder einmal an anderer Stelle konfiguriert werden, dieser Eintrag deckt nur die Einbindung in ein "VCS-Multiroot"-Projekt ab. Für alles weitere verweise ich auf das IntelliJ-Online-FAQ beziehungsweise in dringenden Fällen die Kommentar-Sektion dieses Eintrags.

    Grad der Verknüpfung

    Obwohl ihr nun mehrere Plugins innerhalb eines Projektes habt, verstehen sich diese untereinander (zumindest nach meiner Erfahrung) äußerst gut. Ihr könnt beispielsweise untereinander als Dependency auf andere Module referenzieren, und diese direkt via Refactoring modifizieren. Das erspart eine Menge arbeit, da nicht nur die importierte Source dekompiliert wird, sondern auf die vorhandene Live-Version zurückgegriffen wird (sofern die Version übereinstimmt). Auch können globale Refactorings vorgenommen werden, beispielsweise die Umbenennung des mittleren Packets: tld.tolledomain.plugin_a > tld.superdomain.plugin_a. Dies minimiert den Wartungsaufwand und hilft zu einer höheren Effizienz im Umgang mit den eigenen Anwendungen. Natürlich kann nahezu jede Funktion in IntelliJ IDEA auch individuell pro Modul konfiguriert werden (Codestyles, Build-Jobs, Artifacts, Kompilierung, Build-Tools).
    Einzelnachweise
    1. jetbrains.com/help/idea/2016.2/eclipse.html

    333 mal gelesen

Kommentare 2