¿Por qué solo se ejecuta la primera línea de este archivo por lotes de Windows, pero las tres líneas se ejecutan en un shell de comandos?


Tengo un archivo por lotes que ejecuta tres comandos Maven, uno tras otro. Cada comando se puede ejecutar con éxito en el script - por sí mismo!. Pero cuando añado 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

También, si copio los tres comandos y los pego en un shell de comandos (cmd.exe), ejecutan uno tras otro sin ningún problema. Así que esto es aparentemente algún problema con el archivo por lotes dos.

Author: a_horse_with_no_name, 2010-10-27

5 answers

Maven usa archivos por lotes para hacer su negocio. Con cualquier script por lotes, debe llamar a otro script utilizando el call comando para que sepa volver a su script después de que se complete el script llamado. Intente anteponer call a todos los comandos.

Otra cosa que podría intentar es usar el start comando que debería funcionar de manera similar.

 249
Author: Jeff Mercado,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-16 16:13:48

Tener call ayuda

Sin embargo hoy no es

Así es como resolví:

Contenido del archivo Bat (si desea detener lote cuando uno de los errores cmds)

cmd1 && ^
cmd2 && ^
cmd3 && ^
cmd4

Contenido del archivo Bat (si desea continuar lote cuando uno de los errores cmds)

cmd1 & ^
cmd2 & ^
cmd3 & ^
cmd4
 12
Author: Manohar Reddy Poreddy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-14 03:09:08

Para ejecutar más compilaciones de maven desde un script debes usar la función windows call de la siguiente manera:

call mvn install:install-file -DgroupId=gdata -DartifactId=base -Dversion=1.0 -Dfile=gdata-base-1.0.jar  -Dpackaging=jar -DgeneratePom=true
call mvn install:install-file -DgroupId=gdata -DartifactId=blogger -Dversion=2.0 -Dfile=gdata-blogger-2.0.jar  -Dpackaging=jar -DgeneratePom=true
call mvn install:install-file -DgroupId=gdata -DartifactId=blogger-meta -Dversion=2.0 -Dfile=gdata-blogger-meta-2.0.jar  -Dpackaging=jar -DgeneratePom=true
 5
Author: Seweryn Habdank-Wojewódzki,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-28 13:48:54

Debe ser que el comando mvn en particular exec s y no regresa, por lo tanto no ejecuta el resto de los comandos.

 1
Author: Alan Haggai Alavi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-10-27 19:12:45

Intente escribir el siguiente archivo por lotes y ejecutarlo:

Echo one
cmd
Echo two
cmd
Echo three
cmd

Solo se ejecutan las dos primeras líneas. Pero si escribe "exit" en el símbolo del sistema, se procesan las dos líneas siguientes. Es un proyectil 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!

 0
Author: Dr. belisarius,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-10-27 19:23:24