2012-08-08 48 views
2

我有一個ant buildfile中的任務sshexec。此任務顯示我希望執行的命令的輸出。我的問題是:如何不顯示輸出?sshexec ant任務。如何不顯示輸出

這裏是我的任務:

<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

我的任務: 2012-08-08 16:56:41

+0

我修改了格式,以便您的任務在問題中可見。您可能想看看第一節[markdown文檔](http://stackoverflow.com/editing-help)... – larsks 2012-08-08 17:04:31

+0

您是否嘗試過使用'-q'標誌在安靜模式下運行Ant? http://ant.apache.org/manual/running.html#options – 2012-08-08 18:45:33

回答

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整理一下到之一。記錄器和mute.task屬性可以添加到ANT_ARGS environment variable

2

ant sshexec輸出它將執行的命令以及命令的輸出。可以使用suppresssystemout(自ant 1.9.0)標誌來抑制命令的輸出,但命令本身仍將顯示。如果您需要將密碼傳遞到命令,這可能是一個問題。

在這種情況下,您可以使用inputproperty將數據直接傳遞到遠程命令的輸入,而不會在屏幕(或進程列表)上看到它。

請參閱this問題的答案,瞭解如何執行此操作的示例。