Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ubuntu Maven Ant SCP错误_Ubuntu_Maven_Ant_Scp - Fatal编程技术网

Ubuntu Maven Ant SCP错误

Ubuntu Maven Ant SCP错误,ubuntu,maven,ant,scp,Ubuntu,Maven,Ant,Scp,当我使用ant命令运行“maven antrun插件”(maven 3.0.3)时: <scp /> 我得到: 问题:无法创建任务或类型scp [错误]原因:找不到类org.apache.tools.ant.taskdefs.optional.ssh.Scp 我签入了$ANT_HOME/lib,jar就在那里(antjsch.jar) 有什么问题吗 顺便说一句,我使用的是Ubuntu11.10。Ant是从网站下载的(从ubuntu的存储库我也遇到了同样的问题)你忘了设置任务定

当我使用ant命令运行“maven antrun插件”(maven 3.0.3)时:

 <scp />

我得到: 问题:无法创建任务或类型scp [错误]原因:找不到类org.apache.tools.ant.taskdefs.optional.ssh.Scp

我签入了$ANT_HOME/lib,jar就在那里(antjsch.jar)

有什么问题吗


顺便说一句,我使用的是Ubuntu11.10。Ant是从网站下载的(从ubuntu的存储库我也遇到了同样的问题)

你忘了设置任务定义了吗

<taskdef name="scp" classname="org.apache.tools.ant.taskdefs.optional.ssh.Scp" classpathref="lib/ant-jsch.jar" />

您是否忘记设置任务定义

<taskdef name="scp" classname="org.apache.tools.ant.taskdefs.optional.ssh.Scp" classpathref="lib/ant-jsch.jar" />

例如,
maven antrun插件
不使用系统上安装的
ant
进行操作

scp
是ant的默认jar中不包含的任务。要让它运行,您需要遵循从maven antrun插件页面中记录的步骤

在您的例子中,我想您需要将
antjsch.jar
jsch.jar
作为
插件依赖项

  <dependencies>
      <dependency>
        <groupId>com.jcraft</groupId>
        <artifactId>jsch</artifactId>
        <version>1.4.1</version>
      </dependency>
      <dependency>
        <groupId>org.apache.ant</groupId>
        <artifactId>ant-jsch</artifactId>
        <version>0.1.45</version>
      </dependency>
    </dependencies>

com.jcraft
jsch
1.4.1
org.apache.ant
ant jsch
0.1.45

例如,
maven antrun插件
不使用系统上安装的
ant
进行操作

scp
是ant的默认jar中不包含的任务。要让它运行,您需要遵循从maven antrun插件页面中记录的步骤

在您的例子中,我想您需要将
antjsch.jar
jsch.jar
作为
插件依赖项

  <dependencies>
      <dependency>
        <groupId>com.jcraft</groupId>
        <artifactId>jsch</artifactId>
        <version>1.4.1</version>
      </dependency>
      <dependency>
        <groupId>org.apache.ant</groupId>
        <artifactId>ant-jsch</artifactId>
        <version>0.1.45</version>
      </dependency>
    </dependencies>

com.jcraft
jsch
1.4.1
org.apache.ant
ant jsch
0.1.45

我也遇到了同样的问题并解决了! 请记住,在ant lib dir中既需要
ant jsch.jar
(来自ant或java安装的原生版本),也需要更新
jsch
(在我的例子中是
jsch-0.1.46.jar

您需要从libs文件夹加载最新的
jsch.jar
(但也不能替换
antjsch.jar

许多开发人员所犯的错误是:

  • antjsch.jar
    过时(在这种情况下,ant不知道任务)
  • jsch
    在ant lib dir中不存在或过期
  • 原生的
    antjsch.jar
    替换为
    jsch
    (我做到了…)

  • 在最后两种情况下,ant知道scp命令,但说它不可用。

    我也遇到了同样的问题,并修复了它! 请记住,在ant lib dir中既需要
    ant jsch.jar
    (来自ant或java安装的原生版本),也需要更新
    jsch
    (在我的例子中是
    jsch-0.1.46.jar

    您需要从libs文件夹加载最新的
    jsch.jar
    (但也不能替换
    antjsch.jar

    许多开发人员所犯的错误是:

  • antjsch.jar
    过时(在这种情况下,ant不知道任务)
  • jsch
    在ant lib dir中不存在或过期
  • 原生的
    antjsch.jar
    替换为
    jsch
    (我做到了…)

  • 在最后两种情况下,ant知道scp命令,但表示该命令不可用。

    如果您不想将jar添加到$ant_HOME/lib,或者仍然无法正确使用scp的ant语法(就像我所做的那样),您可以使用exec:

    <exec executable="scp">
      <arg value="-r"/>
      <arg value="${LOCALDIR}/images"/>
      <arg value="remoteHost:/var/www/html"/>
    </exec>
    
    
    

    如果remoteHost是在$HOME/.ssh/config中定义的。

    如果您不想将jar添加到$ANT_HOME/lib,或者仍然无法正确使用scp的ANT语法(就像我所做的那样),您可以退回到只使用exec:

    <exec executable="scp">
      <arg value="-r"/>
      <arg value="${LOCALDIR}/images"/>
      <arg value="remoteHost:/var/www/html"/>
    </exec>
    
    
    

    其中remoteHost是在$HOME/.ssh/config中定义的。

    我最近遇到了类似的问题。在windows系统上,使用Eclipse可以验证:

    • 那只蚂蚁工作
    • SCP自身工作
    • ANT和SCP在Eclipse开发环境中工作
    一个简单的ANT文件可以在eclipse中运行,名为
    build.xml
    。 样本内容如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <project default="main" basedir=".">
    
    <echo message="A 'testant' task."/>
     <target name="main" >
         <scp trust="yes" file="testfileinRootDirectory.xml" todir="username:password@hostname.org.domain:/home/username/existingfolder"/>
      </target>
    </project>
    
    
    
    如果您可以在Eclipse中运行它,那么您就有了某种形式的ANT工作,也有了某种形式的WinSCP工作

    如果无法在Eclipse中工作,请在build.xml目录中打开一个命令窗口,并在命令提示符下运行
    ant
    。(它将自动拾取并运行build.xml文件)

    如果它不起作用,那么检查Eclipse中的条目——因为它可能为ANT使用不同于Maven命令行运行的路径集。从Eclipse签出中: 窗口|
    首选项|
    蚂蚁|
    运行时|
    检查类路径条目

    Ant Home条目可能是特定于Eclipse的:例如:
    c:\Eclipse\plugins\org.apache.Ant_1.8.3_v20120321-1730\lib

    全局条目可能不同(例如,您的安装位置),例如
    c:\dev\ant
    ,或者安装后设置为%ant\u HOME%目录的位置

    但是,Eclipse可能正在
    c:\Users\username\.ant\lib
    目录中搜索SCP JAR

    一种可能的解决方案:
    -将ANT安装到
    c:\Users\username\.ANT
    目录
    -将ANT_HOME设置为
    c:\Users\username\.ANT

    -在Eclipse中设置Ant Home选项(与运行时屏幕相同) 选项)与命令行上的选项相同 (
    c:\Users\username\.ant
    )。

    注: 一个可能的缺点是,ANT的用户和系统设置可能是相同的,但是您只需要在将来将可选的JAR放在一个位置,以使事情正常工作

    测试专家:

    与上面Raghuram的回答类似,正确处理依赖关系非常重要。 使用Cedric Walter页面中的完整示例代码-

    我也遇到了类似的问题