2010-12-08 4 views
24

Tengo un archivo por lotes que se ejecuta de hormigas y luego copia uno de los archivos que fueron producidos:Ejecución de hormigas a partir de un archivo por lotes: comandos posteriores no correr

ant -Dproject.version=1.1.2 release published 
copy /Y D:\dir1\MyJar.jar D:\dir2\MyJar.jar 

Cuando ejecuto el archivo por lotes, hormiga se ejecuta con éxito, pero la instrucción de copia nunca ocurre, aunque funcionará bien si la escribo y presiono Enter después de que la tarea de la hormiga ha terminado.

¿Qué está pasando aquí?

+0

"nunca sucede" - sin ningún mensaje? ¿Tal vez ejecutar el directorio no es lo mismo que intentar ejecutarlo manualmente? – khachik

Respuesta

43

Tuve el mismo problema una vez y la magia call lo hizo.

En ese archivo por lotes de los suyos tratan:

call ant -Dproject.version=1.1.2 release published 
copy /Y D:\dir1\MyJar.jar D:\dir2\MyJar.jar 

no puede decirle qué funcionó, sin embargo. Adivina que es lógica de Microsoft.

+16

Esto es porque 'ant' es un archivo por lotes. Si llama a un lote desde otro, necesita usar 'call'. Pero sí, eso a veces no es muy claro. – Joey

+0

Funciona siempre que no dirija la salida de ant a un archivo: llame a ant target >> log.log. Entonces no continúa. – Ixx

8

Cuando se llama a un archivo por lotes desde otro (que no siempre está claro) que se supone que usar CALL (o call), de lo contrario, funciona más como goto y no vuelve de nuevo a la persona que llama. ¿Es realmente ant un archivo por lotes ant.bat? Esto debería funcionar entonces:

CALL ant -Dproject.version=1.1.2 release published 
Cuestiones relacionadas