¿Cómo ejecutar Maven desde otro directorio (sin cd para dir del proyecto)?
248
Suponiendo que mi proyecto maven esté ubicado /some/location/projecty mi ubicación actual es, /another/location/¿cómo puedo ejecutar maven build sin cambiar a la ubicación del proyecto cd /some/location/project?
@khmarbaise: estoy tratando de automatizar la compilación y las implementaciones usando algunos scripts de shell y no siempre es sencillo usar cd para cambiar el directorio.
Ali Shakiba
@khmarbaise: es posible que desee hacer referencia a múltiples archivos o carpetas en o cerca de un directorio, pero su pom y los archivos a los que se refiere están en otro.
jyoungdev
Respuestas:
432
Puede usar el parámetro -fy especificar la ruta a su archivo pom, p. Ej.mvn -f /path/to/pom.xml
Esto ejecuta maven "como si" estuviera en /path/toel directorio de trabajo.
No, -f inicia Maven con ese pom específico y, por definición, el directorio donde está el pom es el directorio de trabajo de Maven. Lo uso en mi servidor CI para construir módulos específicos en subdirectorios, y puedo asegurarle que funciona.
Dunni
15
Use un punto para las rutas relativas. por ejemplo./path/pom.xml
Snekse
3
Como dice Dunni, esto no funciona. El directorio actual es donde estás. Solo estás usando un pom en otro directorio. Maven no es compatible con esto.
niebla
1
java.lang.IllegalArgumentException: el parámetro 'directorio' no es un directorio
Damir Olejar
Funciona para la mayoría de mis proyectos. Desafortunadamente, algunos proyectos que usan el complemento exec no se pueden construir de esta manera porque el complemento no encuentra el ejecutable aunque el directorio de trabajo esté configurado.
user2043553
15
No creo que Maven lo respalde. Si está en Unix, y no quiere abandonar su directorio actual, puede usar un pequeño script de shell, una función de shell o simplemente un sub-shell:
Me doy cuenta de que esto no responde la pregunta específica, pero puede proporcionarle lo que busca. No estoy familiarizado con el shell de Windows, aunque también debería poder encontrar una solución similar allí.
Excelente. mvn -f param no funciona con proyectos de varios módulos que utilizan una ruta relativa para hacer referencia a los poms secundarios. Gracias, eso es lo que estaba buscando.
redochka
1
Esto funciona en Mac (y sé que funcionará en Linux). En Windows (o cualquier plataforma) debería poder guardar la ruta actual, cd a su proyecto, hacer mvn cosas allí y cd nuevamente en un script. El único problema sería si el guión se detuviera a la mitad.
Erk
8
Para mí, funciona de esta manera: mvn -f /path/to/pom.xml [goals]
Respuestas:
Puede usar el parámetro
-f
y especificar la ruta a su archivo pom, p. Ej.mvn -f /path/to/pom.xml
Esto ejecuta maven "como si" estuviera en
/path/to
el directorio de trabajo.fuente
./path/pom.xml
No creo que Maven lo respalde. Si está en Unix, y no quiere abandonar su directorio actual, puede usar un pequeño script de shell, una función de shell o simplemente un sub-shell:
Como una función bash (que puede agregar a su ~ / .bashrc):
Me doy cuenta de que esto no responde la pregunta específica, pero puede proporcionarle lo que busca. No estoy familiarizado con el shell de Windows, aunque también debería poder encontrar una solución similar allí.
Saludos
fuente
Para mí, funciona de esta manera:
mvn -f /path/to/pom.xml [goals]
fuente
Puedes probar esto:
fuente