web-dev-qa-db-ja.com

Maven:コマンドラインからターゲットディレクトリへのパスを変更する方法は?

Maven:コマンドラインからターゲットディレクトリへのパスを変更する方法は?

(場合によっては別のターゲットディレクトリを使用したい)

74
Igor Mukhin

プロファイルを使用する必要があります。

<profiles>
    <profile>
        <id>otherOutputDir</id>
        <build>
            <directory>yourDirectory</directory>
        </build>
    </profile>
</profiles>

そして、あなたのプロフィールでMavenを開始してください

mvn compile -PotherOutputDir

コマンドラインからディレクトリを本当に定義したい場合は、次のようにすることができます(まったく推奨されません):

<properties>
    <buildDirectory>${project.basedir}/target</buildDirectory>
</properties>

<build>
    <directory>${buildDirectory}</directory>
</build>

そして、このようにコンパイルします:

mvn compile -DbuildDirectory=test

-Dproject.build.directoryを使用してターゲットディレクトリを変更できないためです。

82
Colin Hebert

コリンは、プロファイルが使用されるべきであることは正しいです。ただし、彼の答えは、プロファイル内のターゲットディレクトリをハードコードします。別の解決策は、次のようなプロファイルを追加することです。

    <profile>
        <id>alternateBuildDir</id>
        <activation>
            <property>
                <name>alt.build.dir</name>
            </property>
        </activation>
        <build>
            <directory>${alt.build.dir}</directory>
        </build>
    </profile>

これを行うと、POM、ユーザーの設定、またはコマンドラインで指定できるalt.build.dirプロパティで指定されたものにビルドディレクトリを変更する効果があります。プロパティが存在しない場合、コンパイルは通常のターゲットディレクトリで行われます。

26
Kricket

私の解決策:

  • pom.xmlで:

        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <outputDirectory>${dir}</outputDirectory>
            </configuration>
        </plugin>
    
  • bashのコマンド:

    mvn package -Ddir="/home/myuser/"

4
Evgenii