Maven: Wie ändere ich den Pfad zum Zielverzeichnis von der Kommandozeile?
(Ich möchte in einigen Fällen ein anderes Zielverzeichnis verwenden)
Maven: Wie ändere ich den Pfad zum Zielverzeichnis von der Kommandozeile?
(Ich möchte in einigen Fällen ein anderes Zielverzeichnis verwenden)
target/
und möchte auch über die Befehlszeile bauen können, ohne dass sich die beiden Prozesse gegenseitig auf die Zehen treten.
src/it/my-integration-test-project/pom.xml
das Erstellen von Integrationstests wie über die Befehlszeile, ohne ein target
Verzeichnis im Quellbaum zu erstellen , das kopiert wird, wenn die Integrationstests als Teil der Überprüfungsphase des enthaltenen Projekts ausgeführt werden.
Antworten:
Sie sollten Profile verwenden.
<profiles>
<profile>
<id>otherOutputDir</id>
<build>
<directory>yourDirectory</directory>
</build>
</profile>
</profiles>
Und fange mit deinem Profil an
mvn compile -PotherOutputDir
Wenn Sie Ihr Verzeichnis wirklich über die Befehlszeile definieren möchten, können Sie Folgendes tun (überhaupt NICHT empfohlen ):
<properties>
<buildDirectory>${project.basedir}/target</buildDirectory>
</properties>
<build>
<directory>${buildDirectory}</directory>
</build>
Und kompiliere so:
mvn compile -DbuildDirectory=test
Dies liegt daran, dass Sie das Zielverzeichnis nicht mithilfe von ändern können -Dproject.build.directory
-Dproject.build.directory
verwendet werden sollten, wären sie verwendbar. und dies ist eine -Dproject.build.directory
Problemumgehung für das Problem. Außerdem geben Sie bei der ersten Lösung ein für alle Mal Pfade an. Sie können beim Starten der Befehlszeile keinen Tippfehler im Verzeichnisnamen ausführen. Sie können diese Lösung auch dann problemlos verwenden, wenn Sie mit einer IDE usw. arbeiten.
settings.xml
Befehlszeile aktivieren , um noch mehr Portabilität zu erzielen?
Colin hat Recht, dass ein Profil verwendet werden sollte. Seine Antwort codiert jedoch das Zielverzeichnis im Profil fest. Eine alternative Lösung wäre, ein Profil wie das folgende hinzuzufügen:
<profile>
<id>alternateBuildDir</id>
<activation>
<property>
<name>alt.build.dir</name>
</property>
</activation>
<build>
<directory>${alt.build.dir}</directory>
</build>
</profile>
Dies hätte zur Folge, dass das Build-Verzeichnis in das geändert wird, was in der Eigenschaft alt.build.dir angegeben ist, die in einem POM, in den Einstellungen des Benutzers oder in der Befehlszeile angegeben werden kann. Wenn die Eigenschaft nicht vorhanden ist, erfolgt die Kompilierung im normalen Zielverzeichnis.
-Dalt.build.dir=~/mytarget
der Verwendung -D
für eine andere Eigenschaft entspricht?