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?

War es hilfreich?

Lösung

Wenn Sie möchten, dass das Freigeben einer Komponente eine neue Version jedes Projekts ergibt, verwenden Sie einfach : 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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top