Maven: Как изменить путь к целевому каталогу из командной строки? - PullRequest
74 голосов
/ 11 октября 2010

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

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

Ответы [ 3 ]

81 голосов
/ 11 октября 2010

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

<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

26 голосов
/ 26 сентября 2012

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

    <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, в настройках пользователя или в командной строке. Если свойство отсутствует, компиляция будет происходить в обычном целевом каталоге.

6 голосов
/ 12 марта 2013

Мое решение:

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

...