如何从Ant构建脚本执行交互式应用程序?

如何从Ant构建脚本执行交互式应用程序?,ant,console,exec,task,interactive,Ant,Console,Exec,Task,Interactive,发件人: 请注意,您不能与 分叉程序,唯一的发送方式 它的输入是通过输入和 输入字符串属性。还要注意 自Ant 1.6以来,任何读取 分叉程序中的输入将 接收EOF(-1)。这是一个变化 从Ant 1.5开始,这样的尝试 我会挡住的 如何从ant启动交互式控制台程序并与之交互 我想做的与功能类似,即使用适当的数据库凭据启动mysql客户端解释器,但不限于此用例 下面是一个示例用例: <project name="mysql"> <target name="mysql">

发件人:

请注意,您不能与 分叉程序,唯一的发送方式 它的输入是通过输入和 输入字符串属性。还要注意 自Ant 1.6以来,任何读取 分叉程序中的输入将 接收EOF(-1)。这是一个变化 从Ant 1.5开始,这样的尝试 我会挡住的

如何从ant启动交互式控制台程序并与之交互

我想做的与功能类似,即使用适当的数据库凭据启动mysql客户端解释器,但不限于此用例

下面是一个示例用例:

<project name="mysql">
  <target name="mysql">
    <exec executable="mysql">
      <arg line="-uroot -p"/>
    </exec>
  </target>
</project>
输入密码后,立即退出

将其与直接在shell上执行时发生的情况进行比较(预期行为):


我试过在cosnole上跑步,如果你不使用叉子,它就会起作用。 如文件中所述

除了eclipse之外,还有其他配置InPuthHandler的方法

正如这里所承认的那样。

一个干净的方法来完成这项工作

您可以通过shell启动命令,将标准输入/输出/错误从/重定向到/到
/dev/tty
,这与流程的

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

它在我的用例中不起作用(请参见修订后的问题)。你能在你的系统中测试我的Ant脚本并告诉我它是否有效吗?
$ 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>
<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>