2011-06-10 23 views
5

http://ant.apache.org/manual/Tasks/exec.htmlから:Antビルドスクリプトから対話型アプリケーションを実行するには?

あなたは フォークプログラムと対話することはできません、それに 入力を送信する唯一の方法は、入力と inputStringから属性を経由しています。 Ant 1.6以降の に注意してください。分岐したプログラムで の入力を試みると、 はEOF(-1)を受け取ります。これは、Ant 1.5の変更 です。そのような試みは、 がブロックされます。

antの対話型コンソールプログラムを起動して対話するにはどうすればよいですか?

私がしたいことはdrush sqlcの機能に似ています。これは、適切なデータベースの資格情報を使用してmysqlクライアントインタプリタを起動しますが、これに限定されません。

は、ここでのサンプルユースケースです:アリ使用して実行すると

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

:パスワードを入力した後

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

mysql: 
Enter password: 

BUILD SUCCESSFUL 
Total time: 2 seconds 

を、それがすぐに終了します。

は、シェル(期待される動作)上で直接実行するときに何が起こるかとこれを比較します

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

答えて

0

私はcosnole上で実行して試してみましたが、あなたはフォークしていない場合、それは動作します。 この文書でも述べたとおりです。

Eclipseとは別に、入力ハンドラを構成する追加の方法があります。

ここに認められています。 http://www.coderanch.com/t/419646/tools/java-program-accept-user-input

プロセスのcontrolling terminalに対応してあなたがから/へ/ /dev/ttyに標準入力/出力/エラーをリダイレクトする、シェル経由でコマンドを起動することができ http://www.myeclipseide.com/PNphpBB2-viewtopic-t-25337.html

+0

私の使用例では機能しません(改訂された質問を参照)。あなたのシステムで私のAntスクリプトをテストし、それが動作するかどうか教えてください。 –

1

この仕事を、得るためにきれいな方法。

<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> 
関連する問題