如何更改ant <input />任务的输出?

时间:2012-02-20 10:45:48

标签: ant

默认情况下,任务输出如下:

target name:
     [input] some message:
your input
     [next task]

我想看到这样的事情:

target name:
     [input] some message: your input
     [next task]

如何制作,该任务不会在消息后将光标放到新行?

1 个答案:

答案 0 :(得分:2)

可以做到,但有一点涉及。 input任务本身没有选项可以轻松完成您想要的任务。

但是,在Ant 1.7或更高版本中,您可以通过提供输入处理程序来控制input任务的输出(和输入)。 Ant附带了一些输入处理程序,例如一个输入处理程序,它不会回显您在屏幕上键入的内容。如果需要,您可以编写自己的输入处理程序,以此方式获得对输入和输出的完全控制。

要编写输入处理程序,您必须编写一个实现InputHandler接口的类。我建议您下载Ant源代码并查看DefaultInputHandler并创建自己的版本,并根据您的需要进行修改。在Ant v1.8.3的源代码中,提示和输入实现如下:

r = new BufferedReader(new InputStreamReader(getInputStream()));
do {
    System.err.println(prompt);
    System.err.flush();
    try {
        String input = r.readLine();
        request.setInput(input);
    } catch (IOException e) {
        throw new BuildException("Failed to read input from"
                                 + " Console.", e);
    }
} while (!request.isInputValid());

我没有尝试过,但将println更改为print似乎是一个好主意。

完成后,您可以使用input和(例如)classname参数将Ant的classpath任务指向编译的输入处理程序。