2014-04-23 15 views
6

Mam projekt multimoduł maven i chcę zautomatyzować część przygotowania wydania. Przed wydaniem zwiększam wersję zmienionego modułu A, a ponieważ mam moduł B zależy od A, muszę też zwiększyć wersję B. Wiem, że istnieją wtyczki "versions" i "release", ale one nie kaskada aktualizacji wersji. Czy możliwe jest automatyczne aktualizowanie wersji B?Jak ustawić kaskadową wersję w maven?

Kilka dodatków, które wyjaśniają: Nie używamy wersji modułu nadrzędnego, więc nie muszę jej aktualizować.

Przed wersją gulą:

parent module (1.0) 
| 
|-- A module (0.01.00) 
|-- B module (0.02.00) 

Po wersji gulą:

parent module (1.0) 
| 
|-- A module (0.01.01) 
|-- B module (0.02.01) 
+0

Trudno sobie wyobrazić, co ty "pytam - czy moduły A i B są częścią struktury wielomodułowej? –

+0

Czy moduły A i B mają tę samą wersję co moduł macierzysty, a następnie siebie nawzajem? –

Odpowiedz

4

release wtyczki mają update-versions cel i autoVersionSubmodules opcję, która określa wersje Submoduły do ​​wersji projektu rodzicem.

Przykład użycia here.

Teraz, jeśli masz zależności między swoimi submodułami (Module B zależy od Module A), nie będą one aktualizowane przez wtyczkę release.

Aby to rozwiązać, można użyć ${project.version} podczas określania zależności od Module A w Module B 's pom.xml.

Na przykład (w Module B „s pom.xml):

<dependency> 
     <groupId>test</groupId> 
     <artifactId>module-a</artifactId> 
     <version>${project.version}</version> 
    </dependency> 

(to będzie działać, ponieważ oba Module A i Module B wersje są takie same i pochodzą z wersji projektu dominująca)

+0

dziękuję za odpowiedź, dodałem kilka szczegółów do mojego pytania. Nie używam wersji nadrzędnej, więc po prostu jej nie aktualizuję i zawsze "1.0". Moduł A i moduł B mają różne wersje, ponieważ B zależy od A, ale A nie zależy od B, więc zwiększam wersję B bez zwiększania wersji A. – mulya

Powiązane problemy