Maven: Как изменить путь к целевому каталогу из командной строки?

Maven: Как изменить путь к целевому каталогу из командной строки?

(Я хочу использовать другой целевой каталог в некоторых случаях)

Ответ 1

Вы должны использовать профили.

<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

Ответ 2

Колин правильно, что нужно использовать профиль. Однако его ответ жестко задает целевой каталог в профиле. Альтернативным решением было бы добавить такой профиль:

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

Это может повлиять на изменение каталога сборки на все, что задано с помощью свойства alt.build.dir, которое может быть задано в POM, в пользовательских настройках или в командной строке. Если свойство отсутствует, компиляция произойдет в обычном целевом каталоге.

Ответ 3

Мое решение:

  • в 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/"