【问题标题】:Display the output of an exec task in ant在 ant 中显示 exec 任务的输出
【发布时间】:2012-12-05 08:42:18
【问题描述】:

我正在使用exec Ant 任务对文件进行脚本处理。它工作正常,但不显示 scp 命令的输出。

下面是代码

  <target name="scp-jar" depends = "jar">
      <exec executable="/usr/bin/scp">
          <arg value="my.jar"/>
          <arg value="myserver:dir"/>          
      </exec>
  </target>

我必须进行哪些更改才能显示 scp 命令的文件进度输出?

【问题讨论】:

  • 如果stdout不是tty,scp不会输出进度条,所以ant也不能重定向它..cwshep.blogspot.jp/2009/06/…
  • @TanukiSoftware 嗯,这解释了它。所以问题在于 scp,而不是 ant。

标签: ant scp


【解决方案1】:

默认情况下,命令的输出被写入标准输出,您可以指定输出属性将其更改为文件。更多细节在这里:http://ant.apache.org/manual/Tasks/exec.html

但很难重定向 SCP 的输出。您可能希望在您的情况下使用标志 -v。

【讨论】:

  • 我已经查看了手册。它说默认情况下输出是重定向的,但在这种情况下不会发生。你的意思是 scp 命令的 -v 标志?
【解决方案2】:

ant SCP task 可以显示该信息。用户详细标志。

此任务需要additional jars(jsch.jar 0.1.42 或更高版本)

【讨论】:

  • 我没有使用 scp 任务,因为它需要额外的 jar。我尝试将其设置为我的 mac,但不能。这就是我最终使用 exec 任务的原因。
  • 通过额外的 jar 扩展 jar 是个好主意。为什么要重新发明轮子?
【解决方案3】:

正如@Tanuki Software 提到的,scp 不会在stdout isn't tty 打印进度条。

所以问题更多在于scp 而不是Ant 任务。

我尝试使用scp-v 选项,但它正在显示调试信息和进度条。

所以只有两种选择

  • 使用 Exec 任务并错过进度条。 (或)
  • 使用 Scp 任务,但它需要额外的 jar,在 mac 中无法正常工作,并且很难使其使用 .sshconfig 文件中的默认设置。

我最终选择了第一个选项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多