Tengo un archivo por lotes que ejecuta tres comandos de Maven, uno tras otro. Cada comando se puede ejecutar con éxito en el script, ¡solo! Pero cuando agrego los tres comandos al mismo archivo, solo el primero se ejecuta antes de que salga el script. ¿Alguna idea de por qué?
mvn install:install-file -DgroupId=gdata -DartifactId=base -Dversion=1.0 -Dfile=gdata-base-1.0.jar -Dpackaging=jar -DgeneratePom=true
mvn install:install-file -DgroupId=gdata -DartifactId=blogger -Dversion=2.0 -Dfile=gdata-blogger-2.0.jar -Dpackaging=jar -DgeneratePom=true
mvn install:install-file -DgroupId=gdata -DartifactId=blogger-meta -Dversion=2.0 -Dfile=gdata-blogger-meta-2.0.jar -Dpackaging=jar -DgeneratePom=true
Además, si copio los tres comandos y los pego en un shell de comandos (cmd.exe), se ejecutan uno tras otro sin ningún problema. Aparentemente, esto es un problema con el archivo de dos lotes.
windows
batch-file
cmd
windows-7
wiki
fuente
fuente
Respuestas:
Maven utiliza archivos por lotes para hacer sus negocios. Con cualquier secuencia de comandos por lotes, debe llamar a otra secuencia de comandos utilizando el
call
comando para que sepa volver a su secuencia de comandos después de que se complete la secuencia de comandos llamada. Intenta anteponercall
todos los comandos.Otra cosa que puedes probar es usar el
start
comando que debería funcionar de manera similar.fuente
ant
dentro de los archivos por lotes de Windows antes ycall
fue necesarioant
para ejecutar. Sincall
el lote se detendrá después del primer comando, por lo tanto, los dos segundos no se ejecutan. microsoft.com/resources/documentation/windows/xp/all/proddocs/… para obtener más información sobrecall
start
hará que aparezca una nueva ventana, y cada uno de los tres comandos se ejecutará en paralelo. Si necesita que se ejecuten sincrónicamente, usecall
.call pause
al final (sin comillas) si desea mantener abiertas las ventanas de cmdTener
call
ayuda Sin embargo hoy no lo hizo.Así es como lo resolví:
Contenido del archivo bat (si desea detener el lote cuando se produce un error de cmds)
Contenido del archivo bat (si desea continuar por lotes cuando se produce un error de cmds)
fuente
cmd1 && cmd2 && cmd3 && cmd4
, esencialmente, hacer que todos los comandos sean una línea.)call
solución no era detenerse ante los errores, este sí.Para ejecutar más compilaciones de Maven a partir de un script, deberá utilizar la función de llamada de Windows de la siguiente manera:
fuente
Debería ser que el
mvn
comando en particularexec
no retorna, por lo tanto no ejecuta el resto de los comandos.fuente
mvn
comando?Intente escribir el siguiente archivo por lotes y ejecutarlo:
Solo se ejecutan las dos primeras líneas. Pero si escribe "salir" en el símbolo del sistema, se procesan las dos líneas siguientes. Es un caparazón cargando otro.
Para estar seguro de que esto no es lo que está sucediendo en su script, simplemente escriba "exit" cuando finalice el primer comando.
HTH!
fuente
call
. No es un shell anidado que no está terminado.