2013-01-30 5 views
8

Während der Entwicklung verwenden wir die SNAPSHOT-Version (zum Beispiel 1.0-SNAPSHOT) für Maven-Module.Maven: Der beste Weg, um SNAPSHOT zu Release-Version für Eltern/Kind-Module während der Veröffentlichung zu ändern?

Zum Beispiel Eltern des Moduls Maven Configugration:

<groupId>com.mycomp.basemodule</groupId> 
<artifactId>base-module</artifactId> 
<version>1.0-SNAPSHOT</version> 
<packaging>pom</packaging> 
<name>base-module</name> 
<modules>  
    <module>sub-module1</module>   
    <module>sub-module2</module>   
    <module>sub-module3</module>   
    <module>sub-module4</module>   

</modules> 

Zum Beispiel Kinder Moduls Maven Configugration:

Sub-Modul-1:

<parent> 
    <groupId>com.mycomp.basemodule</groupId> 
     <artifactId>base-module</artifactId> 
     <version>1.0-SNAPSHOT</version> 
</parent> 
<groupId>com.mycomp.sub-module1</groupId> 
<artifactId>sub-module1</artifactId> 
<version>1.0-SNAPSHOT</version> 
<packaging>war</packaging> 
<name>sub-module1</name> 

auch gleiche Konfiguration für andere Untermodule berücksichtigen (2,3,4) auch.

Während der Veröffentlichung des Projekts/Patches müssen wir diese SNAPSHOT-Version in die aktuelle Release-Version ändern.

Es gibt eine grobe Möglichkeit, die Version zu ändern. Ich kann zu jeder einzelnen pom.xml für Eltern und alle untergeordneten Module gehen und kann die SNAPSHOT-Version in die Release-Version ändern.

Gibt es andere Best Practices, um diese SNAPSHOT-Version in eine freigegebene Version zu ändern, sodass ich nicht alle pom.xml-Dateien aktualisieren muss?

Antwort

7

Ich glaube, Sie sollten maven-release plugin verwenden, um das Problem in der Weise zu lösen, wie es in Maven beabsichtigt wurde. Siehe: http://maven.apache.org/guides/mini/guide-releasing.html

Wie docs sagen:

Das Hauptziel der Maven-Release-Plugin ist einen Standard-Mechanismus zu schaffen, Projektartefakte außerhalb des unmittelbaren Entwicklungsteam zu lösen. Das Plugin bietet grundlegende Funktionen zum Erstellen eines Releases und zum entsprechenden Aktualisieren des SCM des Projekts.

UPDATE: scheint, Sie sind nicht der erste, der die Frage ist, siehe: Maven versioning best practices Antwort scheint es ganz vollständig zu sein.

+0

Danke Peter für Ihre Antwort. Aber es scheint so, als würde das maven-release-plugin automatisch die Version inkrementieren, während wir die Veröffentlichung machen? Was ist, wenn ich selbst eine Versionsinkremente möchte? –

+0

Ich denke, ich sehe den Punkt hier nicht. Was ist der Unterschied im Ergebnis, wenn Sie Ihre Erwartungen mit dem Release-Plugin vergleichen? –

+0

@NarendraVerma Was könnte der Grund dafür sein, sich zu erhöhen, als es automatisch von maven-release-plugin zu tun? Wenn Sie etwas anderes als maven-release-plugin haben möchten, können Sie einige Befehlszeilenoptionen verwenden, um das Verhalten zu beeinflussen. – khmarbaise

3

Der einfachere Weg: Aktualisieren Sie die Version mit maven-version-plugin und bereiten Sie dann die Freigabe auf Ihre eigene Weise vor.

+0

einfacher wohl, aber nicht die "Konvention über Konfiguration" -Ansatz Maven-Projekte verwenden sollten. – Eddie

+2

"Konversion über Konfiguration" wird von POM implementiert, nicht von Release Plugin. Version Plugin ist auch ein echtes Maven Plugin.Nicht alle Leute mögen das Release plugin und sie verwenden einen eigenen Weg, um ein Produkt zu veröffentlichen: [Lieven Doclo, Warum ich nie das Maven Release Plugin verwende] (http://java.dzone.com/articles/why-i-nieme-use-use- Maven-Release "JavaLobby Artikel") – UR6LAD