2011-07-04 71 views

Respuesta

167

Uso

call mvn clean 
call mvn package 

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

Si desea que los comandos subsiguientes hagan eco en la línea de comando (mostrar en salida por lotes), también debe hacer echo on después de que se haya hecho call mvn (en la siguiente línea). Esto se debe a que mvn desactiva el eco y no lo vuelve a encender.

+2

mismo con 'gradle' – Prabs

12

También puede tener la siguiente de una sola línea:

call mvn clean package 
+3

Aún así, deberían usar 'call' para que todo lo que escriban después de ejecutar el comando' mvn'. – Joey

6

tengo más proyectos a ejecutar, creé tales bate de esto:

@echo off 
SET DEVELOPMENT_HOME=C:\Projects 

cd %DEVELOPMENT_HOME%\Project1\ 
call mvn clean install 

cd %DEVELOPMENT_HOME%\Project2\ 
call mvn clean install 
22

respuesta de Joey es grande, pero tal vez un ejemplo de código más completo ayudará a cualquier otra persona como yo, que también está averiguar un problema similar de la construcción de varios proyectos de maven desde 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 
6

uso 'llamada' cuando se quiere invocar a otro archivo por lotes en el archivo principal, por lo que el control será devuelto al archivo por lotes de los padres y continuará ejecución.

por ejemplo llamada mvn instalación limpia

1

El bahaviour observada proviene de la época de MS-DOS 1.0 y es mantener por razones de compatibilidad, como soluciones te servirán de Windows llamada función 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.

Cuestiones relacionadas