So aktualisieren Sie die version der untergeordneten Modulen in Maven?

So aktualisieren Sie die version der untergeordneten Module? Es gibt eine Menge von Stackoverflow Fragen wie diese, aber ich war nicht in der Lage zu finden, die passen genau dieses Szenario... würde gerne, falls dieser ein Duplikat ist.

Betrachten Sie das folgende Projekt.

parent
  --mod1
  --mod2

Anfang ein dev-release-Zyklus brauche ich zum aktualisieren der übergeordneten und Module auf die gleiche version. Wenn die version der Eltern und Module gleich geblieben, während der release dann würde ich würde Sie einfach weglassen, die <version> tag aus die Module und führen Sie versions:set -DnewVersion=1.1.1 zum Auftakt der dev-Zyklus. Aber wie es sich herausstellt werden die Module nicht alle am Ende des Zyklus mit der gleichen version. Als bugs und fixes, die materialisieren Sie nur die Module mit den bugs und so aktualisiert. Zum Beispiel die Eltern-und mod2 vielleicht in version 1.1.1-RC1, aber mod1 sein könnte 1.1.1-RC2.

Als solche, die ich brauche, um:

1) einen <version> tag in die Module zum nachverfolgen der einzelnen Module version unabhängig.

2) Wenn mod2 erfordert mod1 einer Abhängigkeit, die ich brauche, um sicherzustellen, mod2 und verweist auf die neueste version von mod1.

Dies führt auf die folgenden zwei Fragen.

1) Am Anfang des Zyklus wie kann ich die Eltern und die Module auf die gleiche version in einem maven-Befehl? Ich habe versucht version:set -DnewVersion=1.1.1, aber das nur die updates die Eltern-version über alle POM ' s aber nicht die Modul-version. Ich habe auch versucht -N versions:update-child-modules, aber ich glaube, ich benutze es falsch, weil es nichts tut, zeigt nur, übersprungen für alle Module.

2) Dies ist eine etwas härter und passt zu Artikel 2 oben. Wie aktualisiere ich die beiden mod1 version und mod2 Verweis auf mod1 version in einem Schritt? Ich weiß wie es in 2 Schritten:

parent-pom:

<properties>
    <!-- update this manually if mod1's version no longer matches parent -->
    <mod1.version>${project.version}</mod1.version>
</properties>

mod2 pom:

    <dependency>
        <groupId>com.xxx</groupId>
        <artifactId>mod1</artifactId>
        <version>${mod1.version}</version>
    </dependency>

Wenn mod1 Beulen bis zu 1.1.1-RC2 update ich die parent-POM und mod1 POM, diese zu reflektieren. Diese werden in zwei Schritten. Jedenfalls, um es wiederum in einem Schritt?

Mein Beispiel war klein, aber im wirklichen Leben gibt es viele Module, die diese wichtige Zeit sparen, außerdem bin ich neugierig.

  • Ich würde vorschlagen, ändern Sie Ihre Vorgehensweise und macht neue RCs alle Module auch nur einige von Ihnen zu ändern. Synchronisieren Sie Ihre release-Zyklus lassen und "release:vorbereiten," damit die version zu aktualisieren für Sie.
  • Vielen Dank für die Beratung. Dieser war bereits auf dem Tisch als eine option. Irgendeine Idee, wie das zu vollbringen, was wird angefordert?
  • Ich habe gesehen, dass ${mod1.version} variable Satz in der parent-pom, rief dann in die child-poms <version>${mod1.version}</version> und Abhängigkeiten, obwohl Sie aus Maven 3 Warnungen, ich bin sicher, es gibt viele gute Gründe, dies nicht zu tun.
  • Sie wissen, habe ich versucht, das auf den ersten. Ich wurde immer Fehlermeldungen, so dass ich dachte, es könnte nicht getan werden. Aber ich versuchte es wieder und der Grund, warum es nicht funktionierte war, weil ich hatte mod1.version zu project.version, in der parent-POM, und das führt zu einer rekursiven Fehler. Wenn ich mod1.version auf eine Konstante, dann funktioniert es. Nun brauche ich nur noch einen Weg, um all die modX.version's und die Eltern-version auf den gleichen Wert am Anfang des release-Zyklus.
  • Mit diesem Ansatz der beste Weg ist leider manuell ändern Sie die Eigenschaften in der übergeordneten pom.xml vor release. Aber ich bin verwirrt, warum Sie möchten, um up-version sub-Komponenten für ein major-release, als hatten Sie sich nicht eigentlich verändert?
  • guter Punkt. Also denke ich, zwei Möglichkeiten, es zu tun wäre, lassen jedes Modul auf die version, die Sie waren organisch, oder die version, die alle Module und Eltern zusammen. Stattdessen wählte der Kunde zu version alles alle Module zusammen, die zu Beginn des Zyklus, sondern nur dann, nur bis die version auf die Module mit bugs/fixes nach RC1. Ich denke, das hat damit zu tun, die nicht wollen, um eine erneute Verteilung aller Module. Ich werde Ihren Vorschlag in einer Sitzung heute.

Schreibe einen Kommentar