2013-01-30 15 views
8

Podczas rozwoju używamy wersji SNAPSHOT (na przykład 1.0-SNAPSHOT) dla modułów maven.Maven: Najlepszy sposób na zmianę SNAPSHOTa na wersję Release dla modułów macierzystych/potomnych podczas wydania?

modułu jest przykładem dominującej 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> 

na przykład modułu Child Maven Configugration:

Sub-Module-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> 

również pod samą konfigurację dla innych modułów podrzędnych (2,3,4).

Podczas zwalniania projektu/poprawki, musimy zmienić tę wersję SNAPSHOT na aktualną wersję wydania.

Istnieje jeden prosty sposób na zmianę wersji. Mogę przejść do każdego pom.xml dla rodzica i wszystkich modułów podrzędnych i mogę zmienić wersję SNAPSHOT na wersję release.

Czy jest jakaś inna najlepsza praktyka, aby zmienić tę wersję SNAPSHOT, aby udostępnić wersję w popularnym miejscu, aby nie było potrzeby aktualizowania wszystkich plików pom.xml?

Odpowiedz

7

Uważam, że powinieneś użyć maven-release plugin, aby rozwiązać problem w sposób, w jaki został zaprojektowany w maven. Zobacz: http://maven.apache.org/guides/mini/guide-releasing.html

Jak docs powiedzieć:

Głównym celem wtyczki Maven uwalnianiu jest dostarczenie standardowego mechanizmu do uwolnienia artefaktów projektu poza bezpośrednim deweloperami. Wtyczka zapewnia podstawową funkcjonalność do tworzenia wersji i odpowiednio aktualizuje SCM projektu.

UPDATE: wydaje się, że nie jesteś pierwszy o pytanie, patrz: Maven versioning best practices Odpowiedź wydaje się być tam dość kompletne.

+0

Dziękuję Peter za odpowiedź. Ale wygląda na to, że wersja z rozszerzeniem maven-release zwiększa się automatycznie, podczas gdy my wydamy tę wersję? Co się stanie, jeśli chcę samodzielnie zwiększyć wersję? –

+0

Myślę, że nie widzę tutaj sensu. jaka jest różnica w wyniku porównywania oczekiwań z tym, co zapewnia wtyczka wydania? –

+0

@NarendraVerma Jaki może być powód robienia samego siebie, niż robienie tego automatycznie przez wtyczkę maven-release? Jeśli chcesz mieć coś innego niż dodatek do wtyczek typu "maven-release", sugerujesz, że możesz użyć niektórych opcji wiersza poleceń, aby wpłynąć na jego zachowanie. – khmarbaise

3

Prostszy sposób: zaktualizuj wersję za pomocą maven-version-plugin, a następnie przygotuj wersję na swój sposób.

+0

Prosto można przypuszczać, ale nie powinno się stosować projektów typu "konwencja dotycząca konfiguracji". – Eddie

+2

"Konflikt nad konfiguracją" implementuje POM, a nie Release Plugin. Wersja plugin to również prawdziwa wtyczka Maven.Nie wszyscy ludzie lubią wersję Release i używają własnego sposobu na wydanie produktu: [Lieven Doclo, Why I Never Use the Maven Release Plugin] (http://java.dzone.com/articles/whyi-i-never-use- maven-release "artykuł JavaLobby") – UR6LAD