2012-12-14 17 views
49

Mam następujący prosty pom uruchomiony przez Maven 3.0.4.Jak przesłonić właściwość maven w wierszu poleceń?

<?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> 

Próbuję przesłonić domyślne ustawienia w linii poleceń tak:

mvn -Dproject.build.finalName=build clean package 

Ale ten jest ignorowany, a ja się test-1.0.jar. Próbowałem zmienić inne właściwości, takie jak outputDirectory, katalog, artifactId, ale także nie powiodło się.

Jaki jest właściwy sposób na zrobienie tego?

Odpowiedz

90

Zobacz Introduction to the POM

finalName jest tworzony jako:

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

Jednym z rozwiązań jest dodanie własność:

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

A teraz spróbuj:

mvn -DfinalName=build clean package

+4

Czy to jedyny sposób na zrobienie tego? Co się stanie, jeśli nie będę mógł dokonać zmian w pliku POM? – glaz666

+0

Nie można przesłonić 'artifactId' i' version'. Możesz więc utworzyć następny projekt dodać dodać do zależności tylko bieżący. Wtedy możesz zrobić, co chcesz. –

+1

Potrzebuję przesłonić 'finalName' za pomocą wiersza poleceń bez zmiany POM. Czy to możliwe? – glaz666

Powiązane problemy