2

我在 ant 构建文件中有一个任务 sshexec。此任务显示我希望执行的命令的输出。我的问题是:如何不显示输出?

这是我的任务:

<sshexec verbose="false" failonerror="true"
  trust="yes" host="${app.deploy.server}"
  username="${deploy.user}"
  command="find /home/software/public_html/${app.name} -name *.jar* -exec md5sum {} +"
  password="${deploy.password}"
  output="jarsAtServer.txt" outputproperty="trash" />

提前致谢。

4

2 回答 2

2

您可以使用自定义记录器使 sshexec 任务(或任何其他任务)的输出静音:

import org.apache.tools.ant.*;
public class MuteTaskLogger extends DefaultLogger
{
    public void messageLogged(BuildEvent event)
    {
        Task task = event.getTask();
        if (task != null &&
            task.getTaskName().equals(event.getProject().getProperty("mute.task")))
        {
            return;
        }
        super.messageLogged(event);
    }
}

编译:

javac -cp ant.jar MuteTaskLogger.java

使用属性“mute.task”指定要静音的任务:

ant -logger MuteTaskLogger -Dmute.task=sshexec -lib <folder-of-MuteTaskLogger-class>

您可以通过将 MuteTaskLogger 放入Ant 库目录之一来整理它。logger 和 mute.task 属性可以添加到ANT_ARGS 环境变量中。

于 2012-08-29T14:01:34.603 回答
2

ant sshexec 输出它将执行的命令以及命令的输出。抑制系统输出(从 ant 1.9.0 开始)标志可用于抑制命令的输出,但仍会显示命令本身。如果您需要将密码传递给命令,这可能是个问题。

在这种情况下,您可以使用 input 属性将数据直接传递到远程命令的输入,而不会在屏幕(或进程列表)上显示。

有关如何执行此操作的示例,请参阅问题的答案。

于 2014-03-10T10:46:51.027 回答