MAVEN MULTI-MODUL-Projekt-Setup mit verschiedenen, verschiedenen Abhängigkeiten
-
24-12-2019 - |
Frage
Lass mich das einfach sagen: Ich bin neu in Maven.Das sagte, ich suchte herum, habe aber keine Antworten auf die folgende Frage gefunden.Ich habe Antworten auf ähnliche Fragen gefunden, einfach nicht dieses Szenario.Oder vielleicht missverstand ich die Antworten, und dies kann gelöst werden, einfach ein Multi-Modul-Setup.
Ich hätte folgende Abhängigkeitshierarchie:
generasacodicetagpre.Ich möchte, dass es funktioniert, damit Änderungen nur zu neuen Versionen aller "Upstream-Module / Apps" führen.Ist dies in der Tat ein einfacher Fall von MAVIN-MAVEN-Setup oder muss ich etwas anderes tun?
Lösung
Wenn Sie möchten, dass das Freigeben einer Komponente eine neue Version jedes Projekts ergibt, verwenden Sie einfach Maven-Release-Plugin : http://maven.apache.org/maven-release/maven-release-plugin/ .
Dokumentation
gemäß doc würde dies:
- Überprüfen Sie, ob es keine nicht kompatiierten Änderungen in den Quellen gibt
- Überprüfen Sie, ob es keine Snapshot-Abhängigkeiten gibt
- Ändern Sie die Version in den POMs von X-Snapshot auf eine neue Version (Sie werden für die verwendeten Versionen aufgefordert)
- wandeln Sie die SCM-Informationen in das POM um, um das endgültige Ziel des Tags
aufzunehmen- Führen Sie die Projekttests gegen die modifizierten POMs aus, um zu bestätigen, dass alles in der Arbeitsordnung ist
- Begehen Sie die modifizierten POMs
- Der Code in der SCM mit einem Versionsnamen kennzeichnen (dies wird dazu aufgefordert)
- Bump Die Version in den POMS auf einen neuen Wert-Y-Snapshot (diese Werte werden auch dazu aufgefordert)
- Begehen Sie die modifizierten POMs
wegen der MAVEN-Multi-Modulstruktur sind sie miteinander verbunden, und jedes Projekt würde in eine neue Version gestoßen.
In wenigen Worten wird dies:
- verschieben Version 1.0-Snapshot -> 1.1-Snapshot
- Tag 1.0
- generieren 1.0.jar (Ou Krieg oder irgendetwas anderes)
Plugin-Nutzung
Angenommen, dass SCM korrekt definiert ist, und das Repository- und Distributionsmanagement konfiguriert, fügen Sie diese Zeilen einfach hinzu
generasacodicetagpre.und anrufen
generasacodicetagpre.Vererbung gegen Abhängigkeit
Sie können die beiden Unterschiede in Betracht ziehen, Maven-Anschreiben:
- Vererbung, das bedeutet Eltern- und Multi / Sub-Module
- Aggregation, mit anderen Worten: Verwendung von Abhängigkeiten
In einem Multi-MAVEN-Projekt können alle Ihre Module, einschließlich des Elternteils, den gleichen Lebenszyklus teilen. Freigeben eines implizierten, der alles entlastet, und das Loslassen nur eins ist ein Nicht-Sinn.
In Ihrem Fall können Sie die App 1 bis 3 nicht ändern, wodurch die APP 4 beeinflusst wird. Wenn die App 4 App 1 abhängt, kann sich die App 1 offensichtlich nicht von der App 4 abhängen (kreisförmige Referenzen sind nicht zulässig).
Sie möchten also APP4 und APP1 auf 3 Lebenszyklen isolieren, Sie sollten keine Multi-Module verwenden, sondern nur ein übergeordnetes Projekt oder eine Hierachy von POM wie Corporate> Hauptprojekt> Unterprojekt (nicht Submodul) teilen. Danach erkläre einfach eine Abhängigkeit zwischen der App 4 und der App 1. (... in app4 pom.xml)
Nur ein weiterer Gedanke: Der Name Ihrer Projekte und Submodule klingt seltsam. "Klassische" Hierarchie ist oft (in Anbetracht der Multi-Business-Objekt-Domäne für ein großes Projekt):
generasacodicetagpre.So ist die Datenbank selten an der Oberseite der Hierarchie.