So schließen Sie nicht modifizierte (SCM) -Module von der Maven -Freisetzung aus
-
13-10-2019 - |
Frage
Ich habe ein riesiges Projekt, das rund 200 Gläser enthält. Wenn ich Release Maven vorbereite ? und sie ausschließen?
Ich möchte keine Gläser (mehr als 200) einzeln stützen.
Zum Beispiel: Ich möchte Relase für Eltern machen, aber ich möchte JAR4 nicht stützen, das nicht geändert wurde
-Parent
---------Module1
----------------jar1*
----------------jar2*
---------Module2
----------------jar3*
----------------jar4
Lösung
Zum Beispiel: Ich möchte Relase für Eltern machen, aber ich möchte JAR4 nicht stützen, das nicht geändert wurde
Die Syntax dafür ist
mvn -pl Module1,Module2/jar3 <your maven goals here>
(In diesem Fall möchten Sie das gesamte Modul1 und Just JAR3 von Module2 erstellen.)
Jetzt ist der knifflige Teil, wie der Parameter nach -PL zusammengebaut wird. Ich bin mir ziemlich sicher, dass es keinen Maven -Weg gibt, dies zu tun. Sie müssen also wahrscheinlich ein Shell -Skript (oder Ruby, Groovy, Perl Python usw. Skript) schreiben, das das für Sie tut.
Grundsätzlich muss Ihr Skript tun:
- Suchen Sie nach allen Maven -Projektverzeichnissen (Verzeichnisse, die ein pom.xml enthalten) im angegebenen Verzeichnis und sortieren Sie sie umgekehrt (tiefste Pfade zuerst).
- Suchen Sie alle geänderten Dateien in der gesamten Hierarchie (mit SVN, CVS oder allen Aufrufen)
- Zeichnen Sie jede geänderte Datei in eines der Projekte (durch Vergleichen von Pfaden) alle übereinstimmenden Projekte in einer Liste ab
- Optimieren Sie nun die Liste, indem Sie eine Eltern/Kinderoptimierung durchführen (wenn alle Kinder eines bestimmten Elternteils vorhanden sind, entfernen Sie die Kinder und fügen Sie den Elternteil hinzu). Tun Sie dies wiederholt, bis Sie die Wurzelhierarchie erreichen.
- Extrahieren Sie aus der verbleibenden Liste die relativen Pfade, schließen Sie sich ihnen mit einem Komma an und starten Sie Ihren Maven -Prozess mit diesem Wert für die
-pl
Parameter.