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ライブラリディレクトリの1つに配置することで、整理することができます。loggerプロパティとmute.taskプロパティは、ANT_ARGS環境変数に追加できます。

于 2012-08-29T14:01:34.603 に答える
2

ant sshexec は、実行するコマンドとコマンドの出力を出力します。コマンドの出力を抑制するには、suppresssystemout (ant 1.9.0 以降) フラグを使用できますが、コマンド自体は引き続き表示されます。コマンドにパスワードを渡す必要がある場合、これは問題になる可能性があります。

その場合、inputproperty を使用して、データを画面 (またはプロセス リスト) に表示せずにリモート コマンドの入力に直接渡すことができます。

これを行う方法の例については、この質問への回答を参照してください。

于 2014-03-10T10:46:51.027 に答える