2013-08-07 10 views
16

Ich frage mich, ob es möglich ist, project.version/version Variable in Maven über die Befehlszeile zu überschreiben?maven override project.version von der Kommandozeile

Die folgende nicht funktioniert:

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

Vielen Dank im Voraus für Ihre Hilfe!

Mein pom.xml ist:

<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

Warum nicht einfach ein Hallo Weltprojekt versuchen? – mebada

+1

@mebada, wenn ich das nicht mehrmals auf verschiedenen Projekten versuchen würde, würde ich nicht fragen. Warum nicht einfach eine Lösung bereitstellen, wenn Sie es wissen? –

+0

bezieht sich auf Ihre Pom, einfach können Sie das nicht tun ... project.version sollte statisch sein – mebada

Antwort

32

Sie können einfach nicht überschreiben project.version. Versuchen:

mvn versions:set -DnewVersion=<version> 

Normalerweise beginne ich durch die parentPom Aktualisierung

mvn versions:set -DnewVersion=1.0.3-SNAPSHOT 

Dies wäre genug, wenn die Mutter pom alle untergeordneten Projekte enthalten sind, wenn Sie nicht zu einem Super-Projekt gehen müssen, die alle enthalten Kind-Projekt und führen

mvn versions:update-child-modules 

auch die beiden vorherigen Schritte ausreichen, wenn die parentPom in relativer Pfad liegt vor, wenn nicht müssen Sie parentPom Projekt mit dem neuen installieren Version

mvn install 

Normalerweise ist dies genug, wenn Sie Modul nicht von einem anderen Modul abhängen. wenn Sie dies tun, erklären seine Version als project.version so und es wird automatisch

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

Überprüfen Sie die maven Versions Plugin docs widerspiegeln.

+0

Funktioniert als Charme, aber eine Sache, die ich nicht erwähnt habe ...Eines der Module hängt vom Artefakt eines anderen Moduls ab, also muss ich es ebenfalls überschreiben. Habe es nur erwähnt, Entschuldigung. –

+1

Bitte überprüfen Sie die Bearbeitung – mebada

+0

Ah, yeah! Danke, dass Sie Ihre Erfahrungen geteilt haben. Das hat funktioniert. –

2

Ja, können Sie die Projektversion überschreiben, indem Sie die gewünschte Variable aus dem Zeilenbefehl übergeben.

Stellen Sie sicher, Sie verwenden die Variable in Ihrer pom.xml

ZB:

mvn deploy -Dversion=1.0-test-SNAPSHOT 

in pom.xml

<version>${version}</version> 

Dies sollte während der Laufzeit gepflückt bekommen. Wenn dieser Ansatz nicht funktioniert, können Sie bitte zeigen, wie Sie sie in Ihrem pom.xml verwenden?

+0

Eigentlich funktioniert das nicht für mich aus irgendeinem Grund. Bitte beziehen Sie sich auf meine pom.xml oben. –

+0

Es funktioniert nur, wenn Sie den '$ {version}' Platzhalter ... uh ... an Ort und Stelle haben. – eckes

+1

Ich habe die gleiche Situation, mit Maven 3.x.x. Der übergebene Parameter wird ignoriert. Maven beklagt sich über den beinhaltenden Ausdruck. – reporter

0

mvn -Dversion=1.0-test-SNAPSHOT deploy.
Syntax ist: mvn [Optionen] [Ziele] [Phase]

+0

Ich fange an zu denken, dass ich etwas falsch mache ... Sowohl Ihre als auch Arpits Lösungen funktionieren nicht :(Es wird einfach nicht geändert. –

+1

Ich stehe vor der gleichen Situation, mit Maven 3.xx Der übergebene Parameter wird ignoriert. – reporter

Verwandte Themen