Top 5 spannende Maven Multi-Modul Projektideen & Themen für Anfänger [2022]

Veröffentlicht: 2021-05-27

Da jedes Projekt komplexer und vielschichtiger wird, ist die richtige Art, es zu verwalten, die Aufteilung in verschiedene Module. In Maven ist es zwar möglich, diese mehreren Projekte als Abhängigkeiten zu verknüpfen, aber es macht den Build-Prozess viel komplexer. Daher ist der bevorzugte Ansatz, das Projekt multimodular zu strukturieren und den Rest an Maven zu übergeben.

Inhaltsverzeichnis

Vorteile der Verwendung von Multimodulen in Maven

Der wesentliche Vorteil der Verwendung von Multimodulen anstelle von Dependency Injection oder anderen Verfahren besteht darin, dass die Duplizierung reduziert wird. Um dies besser zu verstehen, stellen Sie sich vor, Sie arbeiten an einer Anwendung, die aus zwei Modulen besteht – sagen wir dem Backend-Modul und dem Frontend-Modul.

Wenn Sie an diesen beiden Modulen arbeiten und bestimmte Funktionalitäten ändern, die sich auf beide Module auswirken, müssen Sie beide Module oder Komponenten ohne ein spezielles Build-Tool isoliert erstellen. Oder Sie müssen ein Skript schreiben, um den Code zu kompilieren, Tests auszuführen und die Endergebnisse anzuzeigen.

Wenn die Komplexität noch weiter zunimmt und Ihr Projekt aus mehr als zwei Modulen besteht, wird es zunehmend schwieriger, diese Aufgabe ohne ein spezialisiertes Build-Tool auszuführen. Darüber hinaus erfordern Ihre Projekte bei realen Problemen möglicherweise einige Maven-Plug-ins, um einige wichtige Vorgänge während des gesamten Build-Lebenszyklus auszuführen, Abhängigkeiten gemeinsam zu nutzen oder andere BOM-Projekte einzubeziehen.

Aufgrund dieser Herausforderungen sind die Multimodule in Maven äußerst hilfreich und ermöglichen es Ihnen, die Module der Anwendung in einer einzigen Befehlszeile zu erstellen. Es ermöglicht Ihnen auch, eine große Menge an Daten und Konfigurationen nahtlos zwischen mehreren Modulen zu teilen.

Lesen Sie auch: Antwort auf die Maven-Interviewfrage

Wichtige Begriffe, die Sie in Bezug auf Projekte mit mehreren Modulen in Maven kennen sollten

1. Übergeordnetes POM (Projektobjektmodul)

Jede pom.xml-Datei in Maven hat – zur Unterstützung der Vererbung – ein Eltern-POM, bekannt als Super-POM. Diese kann sich in den Maven-Binärdateien befinden, und Sie können die beiden Dateien auch zusammenführen, um das effektive POM zu erstellen.

Sie können also Ihre eigene pom.xml-Datei erstellen, die als übergeordnete Datei für Ihr Projekt dient. Sobald Sie dies getan haben, können Sie alle Abhängigkeiten und Konfigurationen hinzufügen, es als übergeordnetes Element der untergeordneten Module festlegen und die Vererbung aktivieren. Außer der Vererbung bietet Maven auch Aggregation. Das übergeordnete POM, das die Aggregationsfunktion nutzt, wird als aggregiertes POM bezeichnet – diese Art von POM deklariert die untergeordneten Module explizit in der Datei pom.xml.

2. Submodule

Unterprojekte, auch Submodule genannt, können als Standard-Maven-Module verstanden werden, die vom übergeordneten POM erben. Durch Vererbung teilen sich die Module verschiedene Abhängigkeiten und Konfigurationen. Wenn Sie das Projekt jedoch schnell erstellen müssen, müssen Sie die Untermodule explizit im übergeordneten POM deklarieren, wodurch es zum aggregierten POM wird.

3. Das einfache Multi-Modul-Projekt

App und util sind zwei Module, die in The Simple Multi-Module Project enthalten sind. Das util-Modul ist erforderlich, um eine statische Methode zum Verbinden oder Anhängen verschiedener Zeichenfolgen mithilfe der Apache Commons Lang-Bibliothek bereitzustellen, und das app-Modul ist erforderlich, um das util-Modul aufzurufen. Hier ist ein Ausschnitt aus der Datei app.java:

simple-multi/app/src/main/java/app/App.java

öffentliche Klassen-App {

public static void main(String[] args) {

System.out.println(neue App().greet(“Welt!”));

}

öffentlicher Stringgreet(Stringname) {

return Util.join(“Hallo“, Name);

}

}

Um das Projekt zu erstellen, führen Sie es aus

$ cd einfach-multi

$ mvn sauberer Test

Der Code-Builder von Maven erstellt beide Module Ihres Projekts in der richtigen Reihenfolge, führt die erforderlichen Tests durch und gibt die Ergebnisse in einem leicht verständlichen zusammenfassenden Format aus, wie unten:

4. Struktur eines Multi-Modul-Projekts

Hier ist das Layout eines einfachen Multi-Module-Projekts:

Das Simple-Multi-Verzeichnis ist das Root-Verzeichnis und befindet sich ganz oben im gesamten Projekt. Es enthält das POM der obersten Ebene (Parent POM), aber dieses Parent POM hat keinen Quellordner.

Das Verzeichnis der obersten Ebene enthält auch app und util, bei denen es sich um reguläre Maven-Projekte mit Verzeichnissen und der Datei pom.xml handelt.

Das Top-Level-POM und das Modul-POM unterscheiden sich geringfügig vom regulären POM. Schauen wir uns im Detail an, was sie enthalten:

5. POM der obersten Ebene

Ein übergeordnetes POM oder ein POM der obersten Ebene wird vom Maven Multi-Module-Projekt im Stammverzeichnis benötigt.

Das POM der obersten Ebene definiert wichtige Aspekte und Projektkoordinaten wie ArtifactID, Version und GroupID, wie in jedem normalen Projekt. Allerdings ist die Verpackungsart dafür nicht im üblichen War- oder Jar-Format sondern als Pom. Dies liegt daran, dass das Top-Level-Modul kein weiteres Quellverzeichnis enthält. Die Module/Modul-Elemente fügen die app- und util-Module hinzu.

Der Inhalt dieser Datei umfasst:

simple-multi/pom.xml

<Projekt xmlns=”http://maven.apache.org/POM/4.0.0″ xmlns:xsi=”http://www.w3.org/2001/XMLSchema-Instanz”

xsi:schemaLocation=”http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>

<modelVersion>4.0.0</modelVersion>

<groupId>org.codetab</groupId>

<artifactId>simple-multi</artifactId>

<Version>1.0</Version>

<Verpackung>pom</Verpackung>

<Module>

<module>app</module>

<module>util</module>

</module>

</Projekt>

Zusammenfassend lässt sich sagen, dass das POM der obersten Ebene den Pom-Verpackungstyp angibt und alle Submodule explizit auflistet.

Denken Sie daran, dass Sie sich beim Deklarieren von Submodulen im übergeordneten POM keine Gedanken über die Reihenfolge machen müssen, da Maven einen Reactor verwendet, um die aufgelisteten Module korrekt zu ordnen. In Simple-Multi erstellt maven das util-Modul und dann die App, da die App von util abhängt.

5. Modul POM

Der Modul-POM-Ordner enthält einen regulären Quellordner und eine eigene pom.xml-Datei. Der Inhalt dieser util/pom.xml sind:

util/pom.xml

<Projekt xmlns=”http://maven.apache.org/POM/4.0.0″ xmlns:xsi=”http://www.w3.org/2001/XMLSchema-Instanz”

xsi:schemaLocation=”http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>

<modelVersion>4.0.0</modelVersion>

<Elternteil>

<groupId>org.codetab</groupId>

<artifactId>simple-multi</artifactId>

<Version>1.0</Version>

</Eltern>

<artifactId>util</artifactId>

<Eigenschaften>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<maven.compiler.source>1.8</maven.compiler.source>

<maven.compiler.target>1.8</maven.compiler.target>

</Eigenschaften>

<Abhängigkeiten>

<Abhängigkeit>

<groupId>org.apache.commons</groupId>

<artifactId>commons-lang3</artifactId>

<Version>3.6</Version>

</Abhängigkeit>

<Abhängigkeit>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<Version>4.12</Version>

<scope>test</scope>

</Abhängigkeit>

</Abhängigkeiten>

</Projekt>

Es ist nicht erforderlich, die Gruppen-ID und die Version für das Modul anzugeben, da sie vom übergeordneten Element geerbt werden. Der Block „dependencies/dependency“ definiert die Abhängigkeiten des util-Moduls – commons-lang3 und JUnit.

Schauen wir uns nun die app/pom.xml an, die der util/pom.xml ziemlich ähnlich ist, mit Ausnahme des Abhängigkeitsblocks, der unten gezeigt wird:

app/pom.xml

….

<Abhängigkeiten>

<Abhängigkeit>

<groupId>org.codetab</groupId>

<artifactId>util</artifactId>

<Version>1.0</Version>

</Abhängigkeit>

….

</Abhängigkeiten>

Das App-Modul verwendet Methoden aus dem util-Modul, und dafür gibt app/pom.xml util als Abhängigkeit an.

Um alle oben erklärten Dinge zusammenzufassen:

Das Projekt der obersten Ebene (Elternprojekt),

  • Definiert die pom.xml der obersten Ebene, die alle Koordinaten und Submodule angibt, und legt den Verpackungstyp als pom fest.
  • Enthält die weiteren Modulordner.
  • Enthält keine Quellordner.

Jeder der Modulordner ist nichts anderes als normale Maven-Projektverzeichnisse. Die pom.xml-Datei enthält jedoch:

  • Das übergeordnete Element gibt das übergeordnete Element des Moduls an.
  • Die Modulkoordinaten werden im artifactID-Element angegeben. GroupID und Version werden nicht erwähnt, da sie von übergeordneten Koordinaten geerbt werden.
  • Die Abhängigkeit, wenn ein Modul von einem anderen abhängt, wird im Elementdependencies/dependency erwähnt.

Ausführung des Multi-Modul-Projekts

Der Befehl $ mvn clean package kann zum Kompilieren, Testen und Packen des Multimoduls verwendet werden. Um es jedoch mit dem maven-exec-plugin auszuführen, sind die folgenden Schritte erforderlich:

Führen Sie die folgenden Befehle aus:

$ cd einfach-multi

$ mvn saubere Installation

$ mvn exec:java -pl app -Dexec.mainClass=app.App

Der Befehl install installiert die Module in Ihrem lokalen Repository, wo Sie das Projekt dann ausführen können. Die Option -pl app informiert das exec-Plugin über das App-Modul und führt dessen Klasse app.App aus. Ohne Installation schlägt der Erstellungsprozess fehl, da Maven die Abhängigkeit des util-Moduls nicht herunterladen und auflösen kann.

Allerdings ist es ziemlich umständlich, das Projekt jedes Mal vor jedem Lauf in ein lokales Repository zu installieren, insbesondere in der Entwicklungsphase. Um dies zu vereinfachen, können Sie das Multimodul direkt in der Eclipse-IDE ausführen, ohne den Installationsschritt auszuführen.

Lernen Sie Softwareentwicklungskurse online von den besten Universitäten der Welt. Verdienen Sie Executive PG-Programme, Advanced Certificate-Programme oder Master-Programme, um Ihre Karriere zu beschleunigen.

Fazit

Wir hoffen, dass dieser Artikel Ihnen beim Einstieg in den Maven Multi-Module-Prozess geholfen hat. Wie bei allem Neuen geht es nur darum, den ersten Dreh raus zu bekommen. Sobald Sie die grundlegende Struktur und Funktionsweise verstanden haben, sind Sie auf dem besten Weg, mehrere Module in Maven nahtlos zu verwalten.

Wenn Sie mehr über Full-Stack-Softwareentwicklung erfahren möchten, schauen Sie sich das Executive PG-Programm in Softwareentwicklung von upGrad & IIIT-B an – Spezialisierung auf Full-Stack-Entwicklung, das für Berufstätige konzipiert ist und mehr als 500 Stunden strenges Training bietet, 9 + Projekte und Aufgaben, IIIT-B-Alumni-Status, praktische praktische Abschlussprojekte und Jobunterstützung bei Top-Unternehmen.

Was sind Multi-Modul-Projekte?

Mit mehreren Modulen können Sie gemeinsame Artefakte in einem einzigen Modul gruppieren, um die Anzahl der Module zu reduzieren, die zum Erstellen und Bereitstellen eines Projekts erforderlich sind. Projekte mit mehreren Modulen können aus zwei oder mehr Modulen aufgebaut werden, indem eine Eltern-Kind-Beziehung zwischen diesen Modulen definiert wird. Das übergeordnete Modul eines Projekts mit mehreren Modulen wird als Root-Modul bezeichnet. Das untergeordnete Modul eines Projekts mit mehreren Modulen wird als Submodul bezeichnet. Das Root-Modul ist der Eckpfeiler eines Builds mit mehreren Modulen. Die untergeordneten Module können nicht alleine erstellt werden, sie müssen zusammen mit dem Root-Modul erstellt werden.

Was ist eine Projektobjektmodelldatei in Maven?

Eine Projektobjektmodelldatei (POM) ist eine Datei, die ein Projekt beschreibt. Es ist die grundlegende Arbeitseinheit, mit der Entwickler Artefakte in einem Repository veröffentlichen. Ein Projektobjektmodell ist eine einfache Textdatei, die ein Projekt definiert, seine Komponenten auflistet und definiert, was sie tun. Das Projektobjektmodell ist eine Schlüsselkomponente des Maven Software-Projektmanagement-Frameworks. Es ist ein spezieller Typ von XML-Dokument, aus dem ein Maven-Projekt besteht. Eine Pom-Datei kann als Beschreibung eines Projekts betrachtet werden. Es teilt Maven mit, worum es in dem Projekt geht, sowie eine Beschreibung aller Module im Projekt, ihrer Abhängigkeiten und Versionen. Module sind die Bausteine ​​eines Maven-Projekts. Die Module und ihre Abhängigkeiten werden zum Erstellen des endgültigen Projekts verwendet.

Wie erstelle ich ein Maven-Projekt mit mehreren Modulen?

Um ein Maven-Projekt mit mehreren Modulen zu erstellen, müssen Sie ein übergeordnetes Pom definieren und sicherstellen, dass alle Untermodule es erben. Es ist auch wichtig zu beachten, dass Sie auch alle Untermodule in einem einzigen Repository ablegen und das übergeordnete Pom darauf verweisen können. Ein Maven-Projekt mit mehreren Modulen besteht aus einem übergeordneten Pom und einem oder mehreren Untermodulen. Das übergeordnete Pom kann die Metadaten des Maven-Projekts mit mehreren Modulen definieren, z. B. Artefakt-ID, Version, Verpackung und Abhängigkeiten. Untermodule können die Metadaten des übergeordneten Moduls erben, und das übergeordnete Modul kann eine Projektkonfiguration auf hoher Ebene definieren, z. B. die Organisation und Beschreibung des Projekts.