2013-08-07 9 views
16

Zastanawiam się, czy można zastąpić project.version/zmienną wersji w maven linii poleceń?maven zastąpić project.version z linii poleceń

Następujące nie działa:

mvn deploy -Dversion=1.0-test-SNAPSHOT 
mvn deploy -Dproject.version=1.0-test-SNAPSHOT 

Z góry dzięki za pomoc!

Moje pom.xml jest:

<project> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>just.another.company.name</groupId> 
    <artifactId>my-pom</artifactId> 
    <version>1.3-SNAPSHOT</version> 
    <name>My Module</name> 
    <packaging>jar</packaging> 
    <description>POM Project for My Module</description> 
</project> 
+0

dlaczego po prostu nie spróbować projektu Hello World? – mebada

+1

@mebada, gdybym nie próbował tego kilka razy w różnych projektach, nie pytałbym. Dlaczego nie dostarczyć rozwiązania, jeśli je znasz? –

+0

w odniesieniu do Twojego pom, Po prostu nie możesz tego zrobić ... project.version powinien być statyczny – mebada

Odpowiedz

32

Po prostu nie można przesłonić project.version. Spróbuj:

mvn versions:set -DnewVersion=<version> 

Zazwyczaj zaczynam aktualizując parentPom

mvn versions:set -DnewVersion=1.0.3-SNAPSHOT 

To byłoby na tyle jeśli pom rodzic zawierał wszystkie projekty dziecka, jeśli nie trzeba będzie iść do super projekt, który zawiera wszystkie projekt dziecko i wykonać

mvn versions:update-child-modules 

także dwa poprzednie kroki będą wystarczające, jeśli parentPom istnieje w ścieżce względnej jeśli nie trzeba będzie zainstalować projekt parentPom z nowym wersja

mvn install 

Zazwyczaj to wystarczy, jeśli moduł nie jest zależny od innego modułu. jeśli nie, deklarują swoją wersję jako project.version takiego i to będzie widoczne automatycznie

<version>${project.version}</version> 

Sprawdzić maven Versions Plugin docs.

+0

Działa jako urok, ale o jednej rzeczy nie wspomniałem ...Jeden z modułów jest zależny od artefaktu innego modułu, więc muszę go również zastąpić. Właśnie o tym wspomniałem, przepraszam. –

+1

sprawdź edytuj – mebada

+0

Ah, tak! Dziękujemy za podzielenie się wrażeniami. To się udało. –

2

Tak, można zastąpić wersję projektu przekazując zmienną wymaganą z wiersza poleceń.

Upewnij się, że używasz zmiennej w pom.xml

np

mvn deploy -Dversion=1.0-test-SNAPSHOT 

w pom.xml

<version>${version}</version> 

Powinno to odebrano podczas wykonywania. Jeśli to podejście nie działa, czy możesz pokazać, w jaki sposób używasz ich w swoim pom.xml?

+0

Właściwie to nie działa dla mnie z jakiegoś powodu. Proszę odnieść się do mojego pom.xml powyżej. –

+0

Działa tylko wtedy, gdy masz symbol zastępczy '$ {version}' ... uh ... na miejscu. – eckes

+1

Mam do czynienia z podobną sytuacją, używając Mavena 3.x.x. Przekazany parametr zostanie zignorowany. Maven skarży się na wyrażanie zawierające. – reporter

0

mvn -Dversion=1.0-test-SNAPSHOT deploy.
Składnia jest następująca: mvn [opcje] [cele] [faza]

+0

Zaczynam myśleć, że robię coś złego ... Zarówno twoje, jak i Arpitowe rozwiązania nie działają :(To po cichu się nie zmienia –

+1

Mam do czynienia z tą samą sytuacją, używając Mavena 3.xx Przekazany parametr zostanie zignorowany. – reporter