Al ejecutar un archivo por lotes con las tareas apply
o exec
de ant en Windows, encontré que hay casos especiales en los que stdr y stderr no son capturados por hormiga. (Por ejemplo: si se llama a un archivo por lotes que a su vez llama a otros comandos (como node.exe
), entonces la salida estándar y estándar de error del proceso hijo node.exe
se pierde.)
Pasé mucho tiempo tratando de depurar este! Parece que se capturan stdout y stderr del archivo por lotes, pero los comandos invocados por el archivo por lotes no se ven de alguna manera por hormiga. (tal vez porque son procesos secundarios separados). El uso de los atributos output
y error
como se sugiere arriba no ayuda porque solo se captura algunos de stdout y/o stderr.
La solución que se me ocurrió (un piratear) es añadir estos argumentos al final del comando:
<!--Next arg: forces node's stderror and stdout to a temporary file-->
<arg line=" > _tempfile.out 2<&1"/>
<!--Next arg: If command exits with an error, then output the temporary file to stdout, -->
<!--delete the temporary file and finally exit with error level 1 so that -->
<!--the apply task can catch the error if @failonerror="true" -->
<arg line=" || (type _tempfile.out & del _tempfile.out & exit /b 1)"/>
<!--Next arg: Otherwise, just type the temporary file and delete it-->
<arg line=" & type _tempfile.out & del _tempfile.out &"/>
Debido a que este hackear sólo se aplica a las ventanas, recuerde agregar @osfamily="windows"
a la tarea apply
o exec
. Y cree tareas similares para `@ osfamily =" unix ", etc., pero sin estos argumentos adicionales.
entrega de la hormiga de salida no es la salida completa. Si lo redirijo a un archivo, obtengo una cosa totalmente diferente. – Geo
Esto es cierto para los sistemas Unix. Pero en los sistemas Windows, si llama a un archivo por lotes que a su vez llama a otros comandos (como 'node.exe'), entonces se pierden los procesos stdout y stderror del proceso child node.exe. Consulte el _hack_ que describo como una respuesta si está en Windows y tiene este problema. – darcyparker