我在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" />
提前致谢。
答案 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问题的答案。