2011-06-10 13 views
5

Od http://ant.apache.org/manual/Tasks/exec.html:Jak wykonać interaktywną aplikację ze skryptu Ant build?

Należy pamiętać, że nie można wchodzić w interakcje z rozwidlony programu , jedynym sposobem, aby wysłać wejście do niej jest przez wejście i inputstring atrybutów. Zauważ też, że od Ant 1.6 próba odczytania wejścia w rozwidlonym programie spowoduje, że otrzyma EOF (-1). To jest zmiana z Ant 1.5, gdzie taka próba zablokowałaby .

Jak uruchomić interaktywną konsolę z programu?

Co chcę zrobić jest podobna do funkcji drush sqlc, która uruchamia interpreter klienta mysql przy użyciu odpowiednich poświadczeń bazy danych, ale nie ogranicza się do tego przypadku użycia.

Oto przypadek użycia próbki:

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

Kiedy prowadzony przy użyciu ant:

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

mysql: 
Enter password: 

BUILD SUCCESSFUL 
Total time: 2 seconds 

Po wprowadzeniu hasła, to natychmiast kończy działanie.

Porównaj to z tym, co dzieje się podczas wykonywania bezpośrednio na powłoce (oczekiwanego zachowania):

$ 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> 

Odpowiedz

0

Próbowałem działa na cosnole i jeśli nie bulić to działa. Jak wspomniano w dokumencie też.

Oprócz zaćmienia istnieją dodatkowe sposoby konfigurowania wkładek wejściowych.

Jak zostało to tutaj potwierdzone. http://www.coderanch.com/t/419646/tools/java-program-accept-user-input

czysty sposób, aby dostać tę pracę http://www.myeclipseide.com/PNphpBB2-viewtopic-t-25337.html

+0

Nie działa w moim przypadku użycia (patrz poprawione pytanie). Czy możesz przetestować mój skrypt Ant w swoim systemie i dać mi znać, czy to działa? –

1

można uruchomić swoją komendę za pomocą powłoki, przekierowanie standardowego wejścia/wyjścia/błąd/z/do /dev/tty, która odpowiada controlling terminal procesu .

<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> 
Powiązane problemy