java - for - building apache ant
Comando de hormiga con tubos. (5)
Allí realmente estás ejecutando un comando java.
Debe usar la tarea de Exec http://ant.apache.org/manual/Tasks/exec.html pero no está seguro de si también puede ejecutar comandos canalizados o no. Darle una oportunidad.
Debo implementar el comando: java -jar test.jar page.xml | mysql -u user -p base
java -jar test.jar page.xml | mysql -u user -p base
en ant. Así que he intentado con esta tarea:
<java jar="test.jar" fork="true">
<arg line="page.xml | mysql -u user -p base"/>
</java>
Pero tengo en excepción con la tubería - "|" :
java.lang.IllegalArgumentException: Input already set; can''t set to |
Entonces, ese es el problema :)
Cuando ejecuta un programa java desde Ant, la entrada y la salida del programa son capturadas por el tiempo de ejecución de Ant, no puede intentar redirigirlas a otra parte utilizando esa canalización.
Si desea hacerlo, podría tener mejor suerte con la tarea exec
, aunque podría tener el mismo problema.
La tubería (|) solo se puede utilizar en un script de shell. Lo estás pasando como un argumento al proceso de Java.
Así que necesitas ejecutar un script de shell. Puede hacer esto ejecutando (por ejemplo) bash -c
y pasando lo anterior como una declaración de shell (aunque en línea : podría escribir un archivo de script separado pero parece un poco de sobrecarga aquí)
<exec executable="bash">
<arg value="-c"/>
<arg value="java -jar test.jar page.xml | mysql -u user -p base"/>
</exec>
No sé si alguna vez se resolvió esto, pero tuve un problema similar que resolví utilizando lo siguiente:
<exec executable="bash">
<arg value="-c"/>
<arg line=''"java -jar test.jar page.xml | mysql -u user -p base"''/>
</exec>
Sólo pensé que iba a compartir.
Otra solución sería envolver java -jar test.jar page.xml | mysql -u user -p base
java -jar test.jar page.xml | mysql -u user -p base
en un script separado y llámelo con la simple tarea <exec>
.