Maven: Как изменить путь к целевому каталогу из командной строки?
(В некоторых случаях я хочу использовать другой целевой каталог)
Maven: Как изменить путь к целевому каталогу из командной строки?
(В некоторых случаях я хочу использовать другой целевой каталог)
target/
, и я хочу иметь возможность строить из командной строки без того, чтобы два процесса наступали друг другу на пятки.
src/it/my-integration-test-project/pom.xml
из командной строки, без создания target
каталога в исходном дереве, который будет скопирован, когда интеграционные тесты будут запущены как часть фазы проверки содержащего проекта.
Ответы:
Вам следует использовать профили.
<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
-Dproject.build.directory
предназначены для использования, их можно будет использовать; и это способ решения -Dproject.build.directory
проблемы. Кроме того, с первым решением вы указываете пути раз и навсегда, вы не можете сделать опечатку в имени каталога при запуске командной строки, вы можете легко использовать это решение, даже если вы работаете из IDE и т. Д.
settings.xml
а не через командную строку, для еще большей переносимости?
Колин прав, что нужно использовать профиль. Однако его ответ жестко кодирует целевой каталог в профиле. Альтернативным решением было бы добавить такой профиль:
<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, в настройках пользователя или в командной строке. Если свойство отсутствует, компиляция произойдет в обычном целевом каталоге.
-Dalt.build.dir=~/mytarget
эквивалентным использованию -D
для какого-либо другого свойства?