如何更改 ant 的输出任务?

发布于 2025-01-06 21:24:19 字数 262 浏览 0 评论 0原文

默认情况下任务的输出如下所示:

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

我想看到类似这样的内容:

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

我怎样才能使该任务不将光标置于消息后的新行?

Output of task by default look like that:

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

I'd like to see something like this:

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

How can I make, that task does not put cursor to the new line after message?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

Oo萌小芽oO 2025-01-13 21:24:19

可以做,但是有点麻烦。 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 似乎是一个不错的选择主意。

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

It can be done, but it is a little bit involved. There is no option on the input task itself for easily doing what you want.

However, in Ant 1.7 or greater, you can control the output (and input) of the input task by providing an input handler. Ant comes shipped with a few input handlers, for example one for secure input that does not echo what you type to the screen. You can, if you want, write your own input handler, and in that way gain full control of what input and output looks like.

To write an input handler you must write a class that implements the InputHandler interface. I recommend you download the Ant source code and take a look at the DefaultInputHandler and create your own version of that, modifying it to suit your needs. In the source for Ant v1.8.3, the prompt and input is implemented like this:

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());

I haven't tried it, but changing the println to a print seems like a good idea.

When done, you can point Ant's input task to your compiled input handler using the classname and (for instance) classpath parameters.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文