Bauen Sie einzelnes Modul von Multimodul pom
-
06-07-2019 - |
Frage
Ist es möglich, zu tun?
Die Umgebung: MULTI pom besteht aus 3 Modulen: mm1, mm2, mm3. Modul mm2 hat als Abhängigkeit mm1. Es ist möglich, Eltern pom ohne Fehler zu bauen.
Die Frage: Ist es möglich, einzelne Modul mm2 (das heißt, lief Maven aus mm2 Basisverzeichnis) ohne mm1 in lokale Repository Installation
bauenDanke.
Lösung
Ohne automatische Installation nicht, aber es ist möglich, nur gewählt Projekte zu bauen. Sie benötigen Multi-Modul bauen haben (ich nehme an, Sie tun). Im Reaktor-Modus müssen alle Befehle aus der Wurzel des Reaktors ausgeführt werden.
So in Ihrem Fall:
mvn reactor:make -Dmake.folders=mm2
In diesem Fall Sie mm2 Modul und Module von denen es abhängt (mm1).
bauenNützliche Links:
Von Buch Beispielen, die mir nur Projekt bauen bestehen und seine Abhängigkeit Projektmodell. Andere Projekte sind unberührt mit
mvn reactor:make -Dmake.folders=sample-persist
Weitere nützliche Befehl ist reactor:make-dependents
die Projekte erstellen, die auf X abhängen
Andere Tipps
Ich bin nicht sicher, was du meinst genau durch „ohne mm1 in lokale Repository zu installieren“. Meinen Sie vorher mm2 Aufbau oder nie?
Im Zweifel, vielleicht eines der neuen Build-Optionen angekündigt in dem Maven Tipps und Tricks: Erweiterte Reactor Optionen Blog-Eintrag helfen können:
Beginnend mit dem Maven 2.1 Release, gibt es neue Maven Kommandozeile Optionen, die es Ihnen ermöglichen, zu manipulieren die Art und Weise, dass Maven bauen Multimodul-Projekte. diese neuen Optionen sind:
-rf, --resume-from Resume reactor from specified project -pl, --projects Build specified reactor projects instead of all projects -am, --also-make If project list is specified, also build projects required by the list -amd, --also-make-dependents If project list is specified, also build projects that depend on projects on the list
Ich dachte, die speziell auf die -pl
und -am
Optionen. Um eine Untergruppe der Module zu bauen, führen Sie das folgende aus dem Stammverzeichnis
$ mvn --projects mm2 --also-make install
Allerdings bin ich mir nicht sicher, dass dies Ihre Frage beantwortet (die für mich nicht ganz klar ist).
Dies widerspricht dem Prinzip der Abhängigkeiten von Maven2. Was ist das Interesse zu tun, das genau?
Doch wir können uns vorstellen, die mm1 Abhängigkeit von mm2 als system
Abhängigkeit zu definieren:
<dependency>
<groupId>...</groupId>
<artifactId>mm1</artifactId>
<version>...</version>
<scope>system</scope>
<systemPath>../mm1/target/</systemPath>
</dependency>