コマンドラインでMavenプロパティをオーバーライドする方法は?


91

Maven3.0.4で実行されている次のプレーンpomがあります。

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

次のようにコマンドラインでデフォルト設定を上書きしようとしています:

mvn -Dproject.build.finalName=build clean package

しかし、これは無視され、私は得test-1.0.jarます。outputDirectory、directory、artifactIdなどの別のプロパティを変更しようとしましたが、失敗しました。

このことを行うための適切な方法は何ですか?

回答:


135

POMの概要を参照してください

finalNameは次のように作成されます。

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

解決策の1つは、独自のプロパティを追加することです。

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

そして今試してみてください:

mvn -DfinalName=build clean package


5
それを行う唯一の方法ですか?POMファイルに変更を加えることができない場合はどうなりますか?
glaz666 2012

1
finalNamePOMを変更せずにコマンドラインから上書きする必要があります。それは実行可能ですか?
glaz666 2012

1
モデルクラスのプロパティであるため、Mavenプロパティではなく、ユーザー定義のプロパティのみをオーバーライドできるため、使用できません。解決策は答えに記載されています。
glaz666 2012

7
複数のパラメーターをオーバーライドするには、複数の-Dフラグを使用します。誰かが疑問に思っている場合。
マティアス

3
:あなたがオーバーライドしようとしているプロパティは、期間を持っている場合はさらに、次のような単一引用符で囲む必要があるかもしれませんmvn '-Dproject.build.finalName=build' clean package
Xantix
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.