Ant scp任务无法正常工作,即使在ant / lib上使用jsch也是如此

我需要通过scp复制war文件。

我已将jsch-0.1.42.jar添加到$ANT_HOME/lib但我仍然收到此错误:

原因:找不到类org.apache.tools.ant.taskdefs.optional.ssh.Scp。 这看起来像Ant的可选组件之一。

这是运行ant -diagnostics的结果,以防万一:

http://gist.github.com/320859

从诊断的顶部看,这看起来像你的问题:

可选任务:不可用

您的$ ANT_HOME / lib目录缺少ant-jsch.jar,这是您缺少的类所在的位置。

我不确定这是怎么发生的 – 我总是从下载站点上的ZIP文件安装Ant,其中包括所有可选任务。 如果您从Linux软件包安装了Ant,请尝试检查是否有可用任务的单独软件包。

一旦你安装了可选任务,我会删除旧版本的jsch.jar,如@trashgod建议的那样。

我有同样的问题并修复它! 记住,你需要两个 ant-jsch.jar (原ant-jsch.jar ant或java安装)和更新的jsch (在我的例子中是jsch-0.1.46.jar )在ant lib目录中。

您需要从http://www.jcraft.com/jsch/加载最新的jsch.jar并添加到libs文件夹(但不能替换ant-jsch.jar )。

许多开发人员犯的错误:

  1. ant-jsch.jar已过期(在这种情况下,任务对于ant来说是未知的)
  2. 调整库版本,因此ant-jsch.jarjsch是兼容的。
  3. 在lib lib目录中, jsch不存在或过时
  4. 原生的ant-jsch.jar替换为jsch (我做到了……)

在最后2个案例中,ant知道scp命令,但表示它不可用。