¿Cómo anular la propiedad de maven en la línea de comando?

91

Tengo el siguiente pom simple ejecutado por 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>

Estoy tratando de anular la configuración predeterminada en la línea de comando como esta:

mvn -Dproject.build.finalName=build clean package

Pero esto se ignora, y lo entiendo test-1.0.jar. Intenté cambiar otras propiedades, como outputDirectory, directory, artifactId, pero también fallé.

¿Cuál es la forma correcta de hacer esto?

glaz666
fuente

Respuestas:

135

Ver Introducción al POM

finalName se crea como:

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

Una de las soluciones es agregar propiedad propia:

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

Y ahora prueba:

mvn -DfinalName=build clean package

Andrzej Jozwik
fuente
5
¿Es esa la única forma de hacer eso? ¿Qué pasa si no puedo realizar cambios en el archivo POM?
glaz666
1
Necesito anular a finalNametravés de la línea de comando sin cambiar POM. ¿Es eso factible?
glaz666
1
Ok, no está disponible, porque solo puede anular las propiedades definidas por el usuario, no las propiedades de Maven porque son propiedades de la clase Model. La solución se describe en la respuesta.
glaz666
7
Para anular varios parámetros, utilice varios indicadores -D. Si alguien se lo pregunta.
Matthias
3
Además, si la propiedad que está intentando anular tiene puntos, es posible que deba encerrarla entre comillas simples como:mvn '-Dproject.build.finalName=build' clean package
Xantix