2013-01-23 15 views
15

Mam Maven pom.xml, buduję projekt i wdrażam wdrożenie projektu z Jenkinsem.Maven: zmień właściwości wersji w pom.xml

Ale przed i po kompilacji „wydanej wersji” musimy ustawić swoją wersję w

Na przykład: mam w pom.xml

<properties> 
    <version-own>0.0.21-SNAPSHOT</version-own> 
</properties> 

przed wydaniem I trzeba ustawić się ten

<properties> 
    <version-own>0.0.25</version-own> 
</properties> 

po wydaniu Potrzebuję ustawić w ten sposób

<properties> 
    <version-own>0.0.27-SNAPSHOT</version-own> 
</properties> 

Jak można tego dokonać?

+3

Na początek 0,02.21-SNAPSHOT powinien wynieść 0.0.21 w swoim wydaniu. Następnie, po wydaniu, przenosimy numer do następnego wydania i dodajemy migawkę, tj. 0.0.22-SNAPSHOT, aby wskazać, że jest ona aktualnie w fazie rozwoju. Uwaga, wydaje się, że pomijasz numery, co jest w porządku, ale nie zrobiłem tego w tym przykładzie. – chad

Odpowiedz

6

Na początek możesz zrobić to ręcznie. Jeśli twoja kompilacja dobrze się trzyma zgodnie z konwencjami, prawdopodobnie możesz wykorzystać jedną z kilku dodatków do pluginu, które służą do zarządzania numerami wersji.

Urządzenie maven-versions-plugin pomaga w automatyzacji ręcznych zmian numerów wersji. Ma ładne komendy CLI, aby pomóc dostroić swoje poms przed wydaniem.

Następnie jest maven-release-plugin, który automatyzuje cały proces cięcia wydania. To zmieni twoją migawkę na wersję wydania, a następnie rzuci ją do następnej migawki po wydaniu kompilacji. Podczas całego tego procesu angażuje dyskretne wersje poms do kontroli źródła.

Znowu, sekretem sukcesu w bardziej zautomatyzowanych elementach społeczności mavenów jest to, czy twoja kompilacja robi wszystko, czy nie. Zhakowane, wysoce zmodyfikowane, niekonwencjonalne kompilacje zwykle mają wiele barier, aby skutecznie korzystać z wtyczki wydania.

+0

Nie zrozumiałeś mnie. Potrzebujesz zmiany .

 0.0.21-SNAPSHOT    com.test-release features-test-release ${version-own} 
user2004266

25

Jeśli nie trzeba używać własnego mieszkania wersji, należy rozważyć następujące że będzie działać na elemencie <project><version>0.0.21-SNAPSHOT</version></project>:

mvn versions:set versions:commit -DnewVersion="0.0.25" 

To będzie zmodyfikować swój pom i dostosowanie wersji do własnych upodobań. Będziesz prawdopodobnie chciał popełnić tę zmianę do repozytorium kontroli kodu źródłowego dla tego SCM SCM pluginu: meldowanie celem działa dobrze (zakładając, że chcesz to być zautomatyzowane):

mvn scm:checkin -Dincludes=pom.xml -Dmessage="Setting version, preping for release." 

Następnie można wykonać swoje wydanie (polecam maven-release-plugin), po którym można ustawić nową wersję i zatwierdzić ją jak wyżej.

The versions plugin jest twoim przyjacielem. Skryptowanie powyższego prawdopodobnie wymagałoby sparametryzowanej kompilacji, lub najlepiej groovy plugin dla jenkinsa, który pozwala uzyskać specyficzne dla maven-a zmienne kompilacji.

+0

Potrzebujesz zmiany . 0.0.21-SNAPSHOT com.test uwalnianiu funkcje test uwalniania $ {version-own} user2004266

+1

Grając tutaj adwokat diabła: dlaczego nie możesz zepsuć ' 0.0.21-SNAPSHOT' po prostu ' 0.0.21-S NAPSHOT '? Wciąż możesz odwoływać się do wersji z '$ {project.version}' ** jeśli ** tego potrzebujesz i możesz użyć wzorca opisanego powyżej z wersjami, wersjami i wtyczkami scm. – Anew

+0

wersja-własna to wersja zależności – user2004266

0

Patrząc na tę comment, opisujesz, że używasz tej wersji do zapewnienia zależności. maven-release-plugin powinien pomóc Ci w zarządzaniu wersjami. Podaj tę wtyczkę w swoim pom.xml.

I etapu ręcznie dostarczenie wersji systemu i rozwoju, stworzyć pracę w Jenkins, która będzie miała 2 parametry wyrażenie:
developmentVersion
releaseVersion
Dodaj „Wywołanie cele Maven najwyższego poziomu” budować krok, aby wykonać uwalnianie (na przykład):

clean release:clean release:prepare release:perform -DdevelopmentVersion=${developmentVersion} -DreleaseVersion=${releaseVersion} 

Przy budowie zadanie, poprosi o włożenie zarówno developmentVersion i releaseVersion.

Cheers,
despota

5

Jest jeden sposób, aby się tak łatwo. Przy pomocy jednego polecenia można zmieniać w zależności od tego część chcesz:

Do wycinania i wklejania:

mvn build-helper:parse-version versions:set -DbuildNumber=555 '-DnewVersion=${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}-${buildNumber}' 

Dla jasności:

mvn build-helper:parse-version versions:set -DbuildNumber=555 
    '-DnewVersion= 
        ${parsedVersion.majorVersion} 
       .${parsedVersion.minorVersion} 
       .${parsedVersion.incrementalVersion} 
       -${buildNumber}' 

Jest to zwięzły przykład jak zaktualizować wersje w jednej porcji z budowanie wartości

1

Istnieje coś takiego jak parsedVersion.nextIncrementalVersion

mvn build-helper:parse-version versions:set -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.minorVersion}.\${parsedVersion.nextIncrementalVersion} versions:commit

Powiązane problemy