Maven: Jak zmienić ścieżkę do katalogu docelowego z wiersza poleceń?
(W niektórych przypadkach chcę użyć innego katalogu docelowego)
Maven: Jak zmienić ścieżkę do katalogu docelowego z wiersza poleceń?
(W niektórych przypadkach chcę użyć innego katalogu docelowego)
target/
, i chcę mieć możliwość budowania z wiersza poleceń również bez dwóch procesów nachodzących na siebie.
src/it/my-integration-test-project/pom.xml
z wiersza poleceń, bez tworzenia target
katalogu w drzewie źródłowym, który zostanie skopiowany, gdy testy integracyjne zostaną uruchomione w ramach fazy weryfikacji projektu zawierającego.
Odpowiedzi:
Powinieneś używać profili.
<profiles>
<profile>
<id>otherOutputDir</id>
<build>
<directory>yourDirectory</directory>
</build>
</profile>
</profiles>
I zacznij od swojego profilu
mvn compile -PotherOutputDir
Jeśli naprawdę chcesz zdefiniować swój katalog z wiersza poleceń, możesz zrobić coś takiego ( w ogóle NIE zalecane ):
<properties>
<buildDirectory>${project.basedir}/target</buildDirectory>
</properties>
<build>
<directory>${buildDirectory}</directory>
</build>
I skompiluj w ten sposób:
mvn compile -DbuildDirectory=test
Dzieje się tak, ponieważ nie możesz zmienić katalogu docelowego za pomocą -Dproject.build.directory
-Dproject.build.directory
były przeznaczone do użycia, byłoby to użyteczne; i jest to obejście -Dproject.build.directory
problemu. Dodatkowo w pierwszym rozwiązaniu określasz ścieżki raz na zawsze, nie możesz popełnić literówki w nazwie katalogu po uruchomieniu wiersza poleceń, możesz z łatwością skorzystać z tego rozwiązania, nawet jeśli pracujesz z IDE itp.
settings.xml
zamiast wiersza poleceń, aby uzyskać jeszcze większą przenośność?
Colin ma rację, że należy użyć profilu. Jednak jego odpowiedź na stałe koduje katalog docelowy w profilu. Alternatywnym rozwiązaniem byłoby dodanie takiego profilu:
<profile>
<id>alternateBuildDir</id>
<activation>
<property>
<name>alt.build.dir</name>
</property>
</activation>
<build>
<directory>${alt.build.dir}</directory>
</build>
</profile>
Spowodowałoby to zmianę katalogu budowania na taki, jaki podaje własność alt.build.dir, którą można podać w POM, w ustawieniach użytkownika lub w wierszu poleceń. Jeśli właściwość nie jest obecna, kompilacja odbędzie się w normalnym katalogu docelowym.
-Dalt.build.dir=~/mytarget
równoważny użyciu -D
dla innej właściwości?