Maven Integration in der IntelliJ IIDEA

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!

  • In diesem Lexikon Eintrag werde ich erklären, wie man Maven in IntelliJ nutzt.
    Bitte beachtet, dass dies mein erster Lexikon Eintrag ist und weiß mich auf eventuelle Fehler hin.

    Beim Erstellen eines Projektes fängt es an. Ihr wählt links Maven aus und setzt dann rechts oben euer SDK.
    Jetzt macht ihr weiter. Als nächstes werdet ihr nach der GroupId und der ArtifactId gefragt. Hier tragt ihr dann eure späteren Package-Namen an.
    Also GroupId: de.devtek und ArtifactId: testproject.
    Bild

    //EDIT: Ihr dürft kein Minus in einem Package verwenden. Auf dem Bild seht ihr es also Falsch.


    Nachdem ihr das eingetragen habt, müsst ihr nur noch einen Namen für das Projekt wählen. Da das bei jedem Projekt so ist werde ich diesen Schritt überspringen.
    Wenn das Projekt lädt, müsst ihr einmal rechts unten Enable Auto Import anklicken, damit eure Dependencies immer automatisch geladen werden.
    Eure Oberfläche sollte jetzt so aussehen

    Kommen wir nun zum wahrscheinlich wichtigsten Teil eines Maven Projekts. Der pom.xml
    Hier könnt ihr einstellen, welche Apis ihr benutzen wollt.
    Ihr benötigt hierbei Tags, wie sie manchen schon aus HTML bekannt sind.

    Die dreich wichtigsten sind: repositories dependencies und build.
    Wir fangen mit den Repositories an. Hierher bezieht ihr eure Jars, welche in den Dependencies angegeben werden. Der Tag ist folgendermaßen aufgebaut:


    XML-Quellcode

    1. <repositories>
    2. <!--Repository 1-->
    3. <repository>
    4. <id>YOUR ID</id>
    5. <url>URL</url>
    6. </repository>
    7. <!--Repository 2-->
    8. <repository>
    9. <id>YOUR ID</id>
    10. <url>URL</url>
    11. </repository>
    12. </repositories>
    Alles anzeigen

    Die ID ist dann wichtig zu setzen, um dich an einem Maven Server authentifizieren zu können. Denn dann musst du in deiner settings.xml im .m2 Ordner das Kennwort für den Maven Server festlegen und dies wird unter der gewählten ID von dir abgespeichert. @Semikolon
    Die URL ist der Link zum repository. Viele Große Projekte haben ihre eigene Repository. Die von Spigot ist zum Beispiel:
    hub.spigotmc.org/nexus/content/repositories/snapshots/Klick hier, um zur Seite von Spigot zu kommen, wo man es findet.Ihr könnt das Repository mal einbinden.Kommen wir nun zu den Dependencies:Dort finden wir folgenden Aufbau:

    XML-Quellcode

    1. <dependencies>
    2. <dependency>
    3. <groupId>groupid</groupId>
    4. <artifactId>artifactid</artifactId>
    5. <version>version</version>
    6. <scope>scope</scope>
    7. </dependency>
    8. </dependencies>
    Scope ist optional, jedoch bei der Art, wie ich es builde unerlässlich.
    Group- und Artifact-Id sind vom Prinzip her wie bei euerem Projekt. Hier müsst ihr eben das package vom anderen Projekt angeben. Das findet ihr aber auf den Internetseiten gesagt.
    Die Version ergibt sich von selber.
    In diesem Falle binde ich mal Spigot ein und setze den Scope auf provided.
    Hier findet ihr den Dependencies Tag:

    XML-Quellcode

    1. <dependencies>
    2. <dependency>
    3. <groupId>org.spigotmc</groupId>
    4. <artifactId>spigot</artifactId>
    5. <version>1.8.8</version>
    6. <scope>provided</scope>
    7. </dependency>
    8. </dependencies>
    Jetzt kommen wir zum build Teil.
    Dieser ist bei mir in zwei Teile gespalten:
    Zum einen plugins und zum anderen resources.
    Ich habe die folgenden drei Plugins in meiner pom integriert:
    maven-compiler-plugin (Benutzung von Java 8 ermöglichen)
    maven-jar-plugin (Benötigt zum builden)maven-shade-plugin (Inkludieren und Exkludieren von Dependencies)Der Aufbau pro Plugin ist immer unterschiedlich, weshalb ich euch hier den plugins Teil des build Tags gebe:

    XML-Quellcode

    1. <plugins>
    2. <plugin>
    3. <groupId>org.apache.maven.plugins</groupId>
    4. <artifactId>maven-compiler-plugin</artifactId>
    5. <version>3.5.1</version>
    6. <configuration>
    7. <source>1.8</source>
    8. <target>1.8</target>
    9. </configuration>
    10. </plugin>
    11. <plugin>
    12. <groupId>org.apache.maven.plugins</groupId>
    13. <artifactId>maven-jar-plugin</artifactId>
    14. <version>2.3.2</version>
    15. </plugin>
    16. <plugin>
    17. <groupId>org.apache.maven.plugins</groupId>
    18. <artifactId>maven-shade-plugin</artifactId>
    19. <version>2.3</version>
    20. <executions>
    21. <execution>
    22. <phase>package</phase>
    23. <goals>
    24. <goal>shade</goal>
    25. </goals>
    26. </execution>
    27. </executions>
    28. <configuration>
    29. <createDependencyReducedPom>false</createDependencyReducedPom>
    30. <shadedArtifactAttached>true</shadedArtifactAttached>
    31. </configuration>
    32. </plugin>
    Alles anzeigen

    Für genaueren Infos könnt ihr einfach nach der ArtifactId googlen. Dort werden auch weitere Konfigurationsmöglichkeiten erklärt.
    Im resources Teil benötigt ihr nur ein Resource. Damit die plugin.yml mit gebuildet wird, bzw. weitere fertige Dateien inkludiert werden können, müsst ihr folgenden Aufbau beachten:

    XML-Quellcode

    1. <resources>
    2. <resource>
    3. <directory>directory</directory>
    4. <filtering>true/false</filtering>
    5. <includes>
    6. <include>*.endung/datei.endung</include>
    7. </includes>
    8. </resource>
    9. </resources>
    Wollen wir also zum Beispiel alle .yml Datein im resources Ordner inkludieren (dort liegen meine yml Dateien), so muss es wie folgt aussehen:

    XML-Quellcode

    1. <resources>
    2. <resource>
    3. <directory>src/main/resources</directory>
    4. <filtering>true</filtering>
    5. <includes>
    6. <include>*.yml</include>
    7. </includes>
    8. </resource>
    9. </resources>
    Die beiden Teile kommen in den build Tag und ihr seit mit der Pom fertig.
    Eure Java Dateien / Packages müsst ihr im Ordner src/main/java unterbringen. Das sieht dann so aus:

    Jetzt müssen wir das Plugin noch builden. Hier wird der scope Tag nochmal wichtig. provided bedeutet, dass diese Dependency nicht inkludiert wird.
    compile jedoch, gibt an, dass die Dependency inkludiert wird. Da wir die Spigot ja im Server haben. müssen wir sie nicht inkludieren.

    Zum Builden nutze ich das interne Tool von IntelliJ. Dieses findet ihr rechts am Rand, wenn ihr auf Maven Projects klickt.

    Mit Strg/Ctrl könnt ihr mehrere Sachen auswählen, sodass er zum Beispiel, wenn ihr clean und install ausgewählt habt, beim Klick auf das grüne Dreieck erst clean (Datei löschen) und dann install (Datei builden) ausführt.
    Die anderen Funktionen müsst ihr leider googeln, da ich diese noch nie benutzt habe und nicht weiß, was sie machen.
    Eure Datei findet ihr in eurem IntelliProjects Ordner und ProjektName/target/artifactId-version.jar

    Wichtig ist noch, dass ihr nur die Punkte unter Lifecycle verwendet. Die Plugins machen scheinbar Probleme.

    Ich hoffe ich konnte dem ein oder anderen helfen. Solle ich Rechtschreibfehler übersehen haben, so teil mit dies mit. Auch über eine Fehlerkorrektur im inhaltlichen Sinne wäre ich dankbar.

    133 mal gelesen

Kommentare 2

  • Semikolon -

    Die ID ist dann wichtig zu setzen, um dich an einem Maven Server authentifizieren zu können. Denn dann musst du in deiner settings.xml im .m2 Ordner das Kennwort für den Maven Server festlegen und dies wird unter der gewählten ID von dir abgespeichert.