2011-06-10 22 views
5

De http://ant.apache.org/manual/Tasks/exec.html:¿Cómo ejecutar una aplicación interactiva desde Ant script script?

Tenga en cuenta que no puede interactuar con el programa en forma de horquilla , la única manera de enviar de entrada a ella es a través de la entrada y atributos inputString. También tenga en cuenta que desde Ant 1.6, cualquier intento de leer de entrada en el programa en forma de horquilla se recibir un EOF (-1). Este es un cambio de Ant 1.5, donde tal intento bloquearía.

¿Cómo puedo iniciar e interactuar con el programa de consola interactiva de hormiga?

Lo que quiero hacer es similar a la funcionalidad drush sqlc, que es ejecutar el intérprete de cliente mysql utilizando las credenciales de base de datos adecuadas, pero no limitado a este caso de uso.

Aquí es un caso de uso de ejemplo:

<project name="mysql"> 
    <target name="mysql"> 
    <exec executable="mysql"> 
     <arg line="-uroot -p"/> 
    </exec> 
    </target> 
</project> 

cuando se ejecuta utilizando la hormiga:

$ ant -f mysql.xml mysql 
Buildfile: /home/ceefour/tmp/mysql.xml 

mysql: 
Enter password: 

BUILD SUCCESSFUL 
Total time: 2 seconds 

Después de introducir la contraseña, se cierra inmediatamente.

comparar esto con lo que ocurre cuando se ejecuta directamente en la carcasa (comportamiento esperado):

$ mysql -uroot -p 
Enter password: 
Welcome to the MySQL monitor. Commands end with ; or \g. 
Your MySQL connection id is 1122 
Server version: 5.1.58-1ubuntu1 (Ubuntu) 

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. 
This software comes with ABSOLUTELY NO WARRANTY. This is free software, 
and you are welcome to modify and redistribute it under the GPL v2 license 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 

mysql> 

Respuesta

0

He intentado funcionar en cosnole y si no tenedor funciona. Como se menciona en el documento también.

Junto con Eclipse hay formas adicionales para configurar inputhandler.

que se mencione aquí. http://www.coderanch.com/t/419646/tools/java-program-accept-user-input

una manera limpia de conseguir este trabajo http://www.myeclipseide.com/PNphpBB2-viewtopic-t-25337.html

+0

No funciona en mi caso de uso (ver pregunta revisada). ¿Puedes probar mi script Ant en tu sistema y decirme si funciona? –

1

Puede iniciar su comando a través de una concha, la reorientación de entrada/salida/error estándar de/a/a /dev/tty, que corresponde a la controlling terminal del proceso .

<target name="dbshell" description="Open a shell for interactive tasks"> 
    <exec executable="/bin/sh"> 
    <arg value="-c"/> 
    <arg value="mysql -u root -p &lt; /dev/tty &gt; /dev/tty 2&gt; /dev/tty"/> 
    </exec> 
</target> 
Cuestiones relacionadas