2009-07-27 13 views
23

Debo implementar el comando: java -jar test.jar page.xml | mysql -u user -p base en hormiga. Así que lo he intentado con esta tarea:Comando de ejecución de hormigas con tuberías

<java jar="test.jar" fork="true"> 
    <arg line="page.xml | mysql -u user -p base"/> 
</java> 

Pero tengo una excepción con la tubería - "|" :

java.lang.IllegalArgumentException: Input already set; can't set to | 

Por lo tanto, ese es el problema :)

Respuesta

58

El tubo (|) solo se puede utilizar en un script de shell. Lo está pasando como un argumento para el proceso de Java.

Por lo tanto, debe ejecutar un script de shell. Usted puede hacer esto mediante la ejecución (por ejemplo) bash -c y que pasa a lo anterior como una declaración de la cáscara (aunque línea - que podría escribir un archivo de secuencia de comandos independiente pero parece un poco de una sobrecarga aquí)

<exec executable="bash"> 
    <arg value="-c"/> 
    <arg value="java -jar test.jar page.xml | mysql -u user -p base"/> 
    </exec> 
+0

Gracias chicos, ¡ayuda! –

+0

¿Ayuda, o funciona? –

+0

guau, solo pensé que funciona, pero no ... Tengo: No existe tal archivo o directorio –

0

Cuando se ejecuta un programa Java desde Hormiga, la entrada y salida del programa son capturados por el tiempo de ejecución de Ant - no se puede tratar y redirigirlos en otro lugar usando esa tubería.

Si desea hacerlo, puede tener mejor suerte con la tarea exec, aunque eso podría sufrir el mismo problema.

0

En realidad, está ejecutando un comando java.

Necesita ejecutar la tarea 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.

1

Otra solución sería envolver el java -jar test.jar page.xml | mysql -u user -p base en un script separado y llamarlo con la tarea simple <exec>.

7

No sé si esto era cada vez resuelto, pero yo estaba teniendo un problema similar que he resuelto mediante el uso de 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.

+0

¡Esto funcionó para mí! La respuesta aceptada no. – Dexter

Cuestiones relacionadas