sshexec ant任务。如何不显示输出

时间:2012-08-08 16:56:25

标签: ant ssh task

我在ant buildfile中有一个任务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" />

提前致谢。

2 个答案:

答案 0 :(得分: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 library directories之一来整理它。 logger和mute.task属性可以添加到ANT_ARGS environment variable

答案 1 :(得分:2)

ant sshexec输出它将执行的命令以及命令的输出。 suppresssystemout(自ant 1.9.0)标志可用于抑制命令的输出,但仍会显示命令本身。如果您需要将密码传递给命令,则可能会出现问题。

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

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