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
для деяких інших властивостей?