Wie überschreibe ich die Maven-Eigenschaft in der Kommandozeile?

88

Ich habe den folgenden einfachen Pom von Maven 3.0.4.

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>test</artifactId>
    <version>1.0</version>
    <packaging>jar</packaging>

</project>

Ich versuche, die Standardeinstellungen in der Befehlszeile wie folgt zu überschreiben:

mvn -Dproject.build.finalName=build clean package

Aber das wird ignoriert und ich verstehe test-1.0.jar. Ich habe versucht, andere Eigenschaften wie outputDirectory, directory, artefaktId zu ändern, bin aber auch fehlgeschlagen.

Was ist der richtige Weg, um dieses Ding zu machen?

glaz666
quelle

Antworten:

130

Siehe Einführung in das POM

finalName wird erstellt als:

<build>
    <finalName>${project.artifactId}-${project.version}</finalName>
</build>

Eine der Lösungen besteht darin, eigenes Eigentum hinzuzufügen:

<properties>
    <finalName>${project.artifactId}-${project.version}</finalName>
</properties>
<build>
    <finalName>${finalName}</finalName>
 </build>

Und jetzt versuchen Sie:

mvn -DfinalName=build clean package

Andrzej Jozwik
quelle
5
Ist das der einzige Weg, das zu tun? Was ist, wenn ich keine Änderungen an der POM-Datei vornehmen kann?
Glaz666
1
Ich muss die finalNameBefehlszeile überschreiben, ohne POM zu ändern. Ist das machbar?
Glaz666
1
Ok, es ist nicht verfügbar, da Sie nur benutzerdefinierte Eigenschaften überschreiben können, nicht Maven-Eigenschaften, da es sich um Eigenschaften der Modellklasse handelt. Die Lösung ist in der Antwort beschrieben.
Glaz666
7
Verwenden Sie zum Überschreiben mehrerer Parameter mehrere -D-Flags. Wenn sich jemand wundert.
Matthias
3
Wenn die Eigenschaft, die Sie überschreiben mvn '-Dproject.build.finalName=build' clean package
möchten, Punkte enthält