¿Cómo ejecutar más de un comando maven en un archivo bat?


115

Hice un archivo bat como:

mvn clean;
paquete mvn;

pero no funciona, solo se ejecuta el primer comando.

¿alguien me puede ayudar?

Respuestas:


252

Utilizar

call mvn clean
call mvn package

Tenga en cuenta que no necesita punto y coma en los archivos por lotes. Y la razón por la que necesita usar calles que en mvnsí mismo es un archivo por lotes y los archivos por lotes deben llamarse entre sí call; de lo contrario, el control no regresa a la persona que llama.

Si desea que los comandos subsiguientes se repitan en la línea de comandos (mostrar en la salida por lotes), también debe hacerlo echo ondespués de que call mvnhaya terminado (en la siguiente línea). Esto se debe a que mvndesactiva el eco y no lo vuelve a activar.


2
lo mismo congradle
Prabs

27

La respuesta de Joey es excelente, pero tal vez un ejemplo de código más completo ayude a cualquier otra persona como yo que también esté resolviendo un problema similar de construir múltiples proyectos maven a partir de un archivo por lotes en Windows:

REM maven itself uses a batch file so each mvn must be preceded by "call"
REM the -f flag specifies where the pom.xml is found for the project
REM mvn install will save the target output to %userprofile%\.m2\repository ...

call mvn install -f c:\Users\John\workspace\PropertiesReader\pom.xml

call mvn install -f c:\Users\John\workspace\PropertiesWriter\pom.xml

15

También puede tener el siguiente one-liner:

call mvn clean package 

4
Aún así, deben usarlo callpara que mvnse ejecute todo lo que escriban después del comando.
Joey

9

Tengo más proyectos para ejecutar, creé tal bat esto:

@echo off
SET DEVELOPMENT_HOME=C:\Projects

cd %DEVELOPMENT_HOME%\Project1\
call mvn clean install

cd %DEVELOPMENT_HOME%\Project2\
call mvn clean install

8

Utilice 'llamar' cuando desee invocar otro archivo por lotes en el archivo principal, de modo que el control se devolverá al archivo por lotes principal y continuará la ejecución.

por ejemplo, llame a mvn clean install


5

El comportamiento observado proviene de la época de MS-DOS 1.0 y se mantiene por razones de compatibilidad, como soluciones debe utilizar la función de llamada de Windows de la siguiente manera:

call mvn clean
call mvn package

La "llamada" ejecuta un programa por lotes de otro y lo interpreta como una subrutina.


-1

podemos usar lo siguiente para construir un maven y pasarlo a cualquier carpeta de Unix para propósitos de desarrollo

SET projectName=commonutil
cd %gitpath%\%projectName%
call mvn clean install -DskipTests=true %password%
IF %ERRORLEVEL% EQU 0 (Echo No error found) ELSE goto exitdoor 
SET jarpath="%gitpath%\%projectName%\target\%projectName%-0.0.1-SNAPSHOT.jar"
copy /Y %jarpath% "%libpath%"
scpg3 %jarpath% %ssh_profile_name%@%hostname%:%dev_lib_folder_name%

-2

Utilizar

llamada mvn clean package

sample
------
echo %test%
cd %test%\ManaulActionAddNotes-test
call mvn clean
cd %test%\restAuthentication-test
call mvn clean

1
¿Dónde hay más información aquí que en las otras respuestas? Me parece un duplicado de la respuesta aceptada (9 años)
jeb
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.