Der einfachste Weg, dies zu tun, besteht darin, den pom-root
Archetyp zu verwenden, um den Pom der obersten Ebene archetype:generate
zu erstellen, und ihn dann wiederholt zu verwenden , um jedes Modul einzeln zu erstellen. Dadurch werden die Module automatisch zum Root-Pom (Aggregator) hinzugefügt und das Root-Pom als übergeordnetes Pom für jedes Modul festgelegt (Bearbeiten: Anscheinend können einige Archetypen ein fest codiertes übergeordnetes Element haben, aber es funktioniert für maven-archetype-quickstart
).
Hier ist die Aufschlüsselung:
Erstellen Sie den Stamm der obersten Ebene:
mvn archetype:generate \
-DarchetypeGroupId=org.codehaus.mojo.archetypes \
-DarchetypeArtifactId=pom-root \
-DarchetypeVersion=RELEASE
cd
in Ihr neu erstelltes Root-Verzeichnis.
Für jedes Modul:
mvn archetype:generate \
-DarchetypeGroupId=org.apache.maven.archetypes \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DarchetypeVersion=RELEASE
Beachten Sie, dass -DarchetypeVersion=RELEASE
oben automatisch die neueste Version des Archetyps verwendet wird. Möglicherweise möchten Sie -DgroupId=...
jedem dieser Befehle etwas hinzufügen , um zu vermeiden, dass Sie sich wiederholen.
Hier ist ein Screencast, wie Sie dies mit Intellij Idea tun können. Starten Sie zuerst ein neues Projekt (Datei -> Neues Projekt) und wählen Sie 'Maven Module':
Geben Sie einen Namen ein, klicken Sie auf Weiter, ändern Sie in den folgenden Schritten nichts anderes, klicken Sie auf Fertig stellen.
Geben Sie nun Ihren
pom.xml
Typ ein<packaging>
und aktivieren Sie automatische Updates:Module eingeben:
Platzieren Sie den Cursor auf
m1
und drücken Sie Alt+Enter.Das Modul
m1
wird automatisch zu Ihrem Projekt hinzugefügt. Jetzt können Sie tun Alt+Enterfürm2
und das ist es.Sie können auch damit beginnen,
pom.xml
ein vorhandenes Modul Ihres Projekts hinzuzufügen : Klicken Sie in der Projektstruktur mit der rechten Maustaste darauf, "Framework-Unterstützung hinzufügen ...", und wählen Sie "Maven". Dadurch wird ein erstelltpom.xml
.quelle
<module>m1</module>
in das<modules>
Tag einwickeln . Ich bin neu in der POM-Datei und habe viel Zeit damit verbracht, warumalt + enter
keine der genannten Optionen angezeigt werden.mvn archetype:create
wurde zugunsten von abgelehntmvn archetype:generate
, daher wurde nur der Name geändert. In den offiziellen Repositorys gibt es einen Archetyp für Projekte mit mehreren Modulen. Wenn Sie diesen Befehl ausführen, erhalten Sie das (minimalistische) Ergebnis:[axe@gromp test]$ mvn archetype:generate .. <num>: remote -> pom-root (Root project archetype for creating multi module projects) .. Choose a number: 109: <num> .. [axe@gromp test]$ tree . └── modules.test └── pom.xml 1 directory, 1 file [axe@gromp test]$ cat modules.test/pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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>com.example</groupId> <artifactId>modules.test</artifactId> <version>1.0-SNAPSHOT</version> <packaging>pom</packaging> <name>modules.test</name> </project>
Grundsätzlich müssen Sie die Ordnerstruktur und die Moduldeskriptoren (pom.xml-Dateien) selbst erstellen. Die Verwendung eines einfachen Shell-Skripts oder einer Batch-Datei ist problemlos möglich, wenn Sie es mehrmals benötigen.
quelle
Ich bin mir nicht sicher, ob ich Ihre Frage richtig verstehe, aber zum Erstellen eines Multi-Modul-Projekts verwende ich normalerweise einen einfachen Pom (auf der Root-Ebene):
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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>com.vijaykiran</groupId> <artifactId>myproject-parent</artifactId> <version>1.0</version> <packaging>pom</packaging> <modules> <module>m1</module> <module>m2</module> </modules> </project>
Dies ist wahrscheinlich der einfachste übergeordnete POM mit mehreren Modulen, den Sie verwenden können. Das Projekt, das Sie erstellen möchten, verfügt möglicherweise bereits über einen Archetyp, der Ihnen beim Erstellen der Struktur helfen kann. Obwohl Sie Hilfe von einer IDE erhalten können, um den POM selbst zu schreiben, ist es normalerweise einfacher, diesen zu verwenden, wenn für den Typ des Projekts, das Sie erstellen möchten, ein Archetyp verfügbar ist.
quelle
archetype:generate
fragt mich beispielsweise, ob ich ein Projekt mit mehreren Modulen erstellen möchte und wenn ja, welche Module es enthält, und erstellt dann diepom.xml
Dateien für mich.Wenn Sie mit der Eclipse-IDE arbeiten, sollten Sie das Plug-In m2eclipse verwenden . Dies ist eine der einfachsten Möglichkeiten, Projekte mit mehreren Modulen zu erstellen. Sie können jedem Maven-Projekt ein Modul hinzufügen, indem Sie in Eclipse ein 'Maven-Modul-Projekt' erstellen. Dabei haben Sie die Möglichkeit, ein übergeordnetes Projekt auszuwählen. Das Plug-In erledigt alles, dh es kopiert das neue Modul in das übergeordnete Modul und ändert die Datei pom.xml.
quelle
Gleiche Antwort wie Chris H. Ich habe gerade Optionen für Gruppen-ID, Artefakt-ID und Version hinzugefügt und den interaktiven Modus deaktiviert.
mvn archetype:generate -DarchetypeGroupId=org.codehaus.mojo.archetypes \ -DarchetypeArtifactId=pom-root \ -DarchetypeVersion=RELEASE \ -DinteractiveMode=false \ -DgroupId=com.mycompany.app \ -DartifactId=my-app \ -Dversion=1.0.0-SNAPSHOT \
quelle
Betrachten Sie ein übergeordnetes Projekt Lesezeichen und 3 Untermodule Rest, Sicherheit und Modell, unter Bezugnahme auf Spring-Dokumente . Es hat nicht die Abhängigkeiten wie im Spring-Dokument, sondern nur die Grundeinstellung aus Sicht mehrerer Module.
So erstellen Sie ein übergeordnetes Maven-Projekt im nicht interaktiven Modus / Stapelmodus
mvn archetype:generate \ -DarchetypeGroupId=org.codehaus.mojo.archetypes \ -DarchetypeArtifactId=pom-root \ -DarchetypeVersion=RELEASE \ -DgroupId=bookmarks \ -DartifactId=bookmarks \ -Dversion=0.0.1-SNAPSHOT \ -DinteractiveMode=false
So erstellen Sie Submodule im nicht interaktiven Modus / Batch-Modus.
CD in Ihr neu erstelltes Root-Verzeichnis. Bezugnehmend auf die Antwort von @ Chris.H
-Dpackage ist die Paketstruktur. Hier sind es Lesezeichen. Wenn nicht angegeben, wird die Artefakt-ID als Standardpaket betrachtet
mvn archetype:generate \ -DarchetypeGroupId=org.apache.maven.archetypes \ -DarchetypeArtifactId=maven-archetype-quickstart \ -DarchetypeVersion=RELEASE \ -DgroupId=model \ -DartifactId=model \ -Dversion=0.0.1-SNAPSHOT \ -Dpackage=bookmarks \ -DinteractiveMode=false
Um ein neues Modul in Eclipse zu erstellen, gehen Sie zu Datei-> Neu-> Andere-> Maven-> Maven-Modul. Dies wird sofort im Eclipse Workspace Package Explorer angezeigt.
Oder von cli, cd im übergeordneten Ordner, hier Lesezeichen und führen Sie Folgendes aus, es wird das Projekt erstellt und dann müssen Sie als Maven-Projekt in Eclipse importieren oder können von übergeordneten, hier Lesezeichenprojekt arbeiten
mvn archetype:generate \ -DarchetypeGroupId=org.apache.maven.archetypes \ -DarchetypeArtifactId=maven-archetype-quickstart \ -DarchetypeVersion=RELEASE \ -DgroupId=security \ -DartifactId=security \ -Dversion=0.0.1-SNAPSHOT \ -Dpackage=bookmarks \ -DinteractiveMode=false
quelle
Einfache 4 Schritte, wenn Sie das Kopieren und Einfügen von XML vermeiden möchten.
Erstellen Sie ein 284 (Standard) Archetyp-Projekt. Öffnen Sie die erstellte POM-Datei und ändern Sie die Verpackung von JAR zu POM
Löschen des src-Ordners aus dem Projekt - Dies ist jetzt das übergeordnete Projekt ohne src, da die Verpackung pom ist. Erstellen Sie im obigen Ordner ein weiteres neues Projekt (284 Standard). Ändern Sie die Verpackung in Krieg oder EJB oder Ohr. Dies wird zum Untermodul.
Führen Sie mvn eclipse: eclipse auf jedem Modul aus. Jetzt sollte das Projekt bereit sein, als Eclipse-Projekt importiert zu werden.
Beim Importieren des Projekts beschwert sich Eclipse, dass die folgende Projektkonfiguration mit pom.xml nicht auf dem neuesten Stand ist. Führen Sie Maven-> Update Project aus oder verwenden Sie Quick Fix. Um den obigen Fehler zu vermeiden, klicken Sie mit der rechten Maustaste und wählen Sie Schnellkorrektur. Dadurch wird das POMS aktualisiert. Eine andere Möglichkeit, diesen Fehler zu vermeiden, besteht darin, die Untermodule im übergeordneten POM zu deklarieren
Weitere Informationen finden Sie unter dem folgenden Link. http://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Example_1
quelle