Es gibt zwei unabhängige Projekte ( myWarProject
und MyEjbProject
). Wenn ich das in erstelle, muss myWarProject
ich das MyEjbProject
In im lokalen Repository installieren , damit ich es im myWarProject als Abhängigkeit definieren und das myWarProject erfolgreich verpacken kann.
Gibt es eine Möglichkeit, dies zu handhaben, ohne das MyEjbProject
separat zu installieren und auch ohne als übergeordnete Module zu definieren.
Ich weiß, dass dies durch Ameisenbau erreicht werden kann, frage mich aber, ob es einen Weg gibt, mit Maven umzugehen?
Wir können das übergeordnete Projekt mit "pom" erstellen und die beiden anderen unter das übergeordnete Projekt verschieben. Leider kann ich dies nicht tun, da wir diese beiden Projekte derzeit bereits als separate Projekte im CVS haben, deren Struktur ich nicht ändern kann. Wenn ich das durch eine POM-Datei bewältigen kann, ist dies das, wonach ich suche.
Antworten:
Angenommen, das MyEjbProject ist kein anderes Maven-Projekt, das Sie besitzen oder mit maven erstellen möchten, können Sie Systemabhängigkeiten verwenden, um auf diese Weise eine Verknüpfung mit der vorhandenen JAR-Datei des Projekts herzustellen
<project> ... <dependencies> <dependency> <groupId>yourgroup</groupId> <artifactId>myejbproject</artifactId> <version>2.0</version> <scope>system</scope> <systemPath>path/to/myejbproject.jar</systemPath> </dependency> </dependencies> ... </project>
Das heißt, es ist normalerweise die bessere (und bevorzugte) Möglichkeit, das Paket im Repository zu installieren, indem Sie es entweder zu einem Maven-Projekt machen und es erstellen oder es so installieren, wie Sie es anscheinend bereits getan haben.
Wenn sie jedoch voneinander abhängig sind, können Sie jederzeit ein separates übergeordnetes Projekt erstellen (muss ein "pom" -Projekt sein), das die beiden anderen Projekte als "Module" deklariert. (Die untergeordneten Projekte müssten das dritte Projekt nicht als übergeordnetes Projekt deklarieren.) Infolgedessen erhalten Sie ein neues Verzeichnis für das neue übergeordnete Projekt, in das Sie wahrscheinlich auch die beiden unabhängigen Projekte wie folgt einfügen:
Das übergeordnete Projekt würde einen Abschnitt "Module" erhalten, in dem alle untergeordneten Module benannt werden. Der Aggregator würde dann die Abhängigkeiten in den untergeordneten Modulen verwenden, um tatsächlich die Reihenfolge herauszufinden, in der die Projekte erstellt werden sollen.
<project> ... <artifactId>myparentproject</artifactId> <groupId>...</groupId> <version>...</version> <packaging>pom</packaging> ... <modules> <module>MyEJBModule</module> <module>MyWarModule</module> </modules> ... </project>
Auf diese Weise können die Projekte miteinander in Beziehung stehen, aber (sobald sie im lokalen Repository installiert sind) weiterhin unabhängig als Artefakte in anderen Projekten verwendet werden
Wenn sich Ihre Projekte nicht in verwandten Verzeichnissen befinden, können Sie versuchen, sie als relative Module anzugeben:
Jetzt können Sie dies einfach tun (in Maven 2 gearbeitet, es einfach ausprobiert):
<!--parent--> <project> <modules> <module>../mywarproject</module> <module>../myejbproject</module> </modules> </project>
quelle