Maven: ¿Cómo cambiar la ruta al directorio de destino desde la línea de comandos?
(Quiero usar otro directorio de destino en algunos casos)
Maven: ¿Cómo cambiar la ruta al directorio de destino desde la línea de comandos?
(Quiero usar otro directorio de destino en algunos casos)
target/
, y quiero poder construir también desde la línea de comandos sin que los dos procesos se pisen el uno al otro.
src/it/my-integration-test-project/pom.xml
desde la línea de comando sin crear un target
directorio en el árbol de origen que se copiará cuando las pruebas de integración se ejecuten como parte de la fase de verificación del proyecto contenedor.
Respuestas:
Deberías usar perfiles.
<profiles>
<profile>
<id>otherOutputDir</id>
<build>
<directory>yourDirectory</directory>
</build>
</profile>
</profiles>
Y comienza a maven con tu perfil
mvn compile -PotherOutputDir
Si realmente desea definir su directorio desde la línea de comando, puede hacer algo como esto ( NO recomendado en absoluto ):
<properties>
<buildDirectory>${project.basedir}/target</buildDirectory>
</properties>
<build>
<directory>${buildDirectory}</directory>
</build>
Y compila así:
mvn compile -DbuildDirectory=test
Eso es porque no puede cambiar el directorio de destino usando -Dproject.build.directory
-Dproject.build.directory
estaban destinadas a ser utilizadas, serían utilizables; y esta es una solución para el -Dproject.build.directory
problema. Además, con la primera solución, especifica las rutas de una vez por todas, no puede cometer un error tipográfico en el nombre del directorio cuando inicia la línea de comando, puede usar esta solución fácilmente incluso si trabaja desde un IDE, etc.
settings.xml
de la línea de comandos en lugar de hacerlo, para una mayor portabilidad.
Colin tiene razón en que debería usarse un perfil. Sin embargo, su respuesta codifica el directorio de destino en el perfil. Una solución alternativa sería agregar un perfil como este:
<profile>
<id>alternateBuildDir</id>
<activation>
<property>
<name>alt.build.dir</name>
</property>
</activation>
<build>
<directory>${alt.build.dir}</directory>
</build>
</profile>
Hacerlo tendría el efecto de cambiar el directorio de compilación a lo que sea dado por la propiedad alt.build.dir, que se puede dar en un POM, en la configuración del usuario o en la línea de comando. Si la propiedad no está presente, la compilación se realizará en el directorio de destino normal.
-Dalt.build.dir=~/mytarget
equivalente a usar -D
para alguna otra propiedad?