2011-12-06 112 views
0

当我运行一个 “Maven的antrun-插件”(行家3.0.3)与蚂蚁命令:Maven的蚂蚁SCP错误

<scp /> 

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

我检查了我的$ ANT_HOME/lib并且jar在那里(ant-jsch.jar)。

有什么问题?

顺便说一句我正在使用Ubuntu 11.10。蚂蚁是从网站上下载(从Ubuntu的仓库,我得到了同样的问题)

回答

-1

你忘了设定的任务定义

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

我试试这个和同样的问题 –

4

其一,maven antrun plugin使用已安装的ant您的系统进行操作。

scp是一个任务,这是不包括在蚂蚁的默认 jar。要使其运行,您需要按照maven antrun插件页面中this example中记录的步骤操作。

在你的情况,我想你需要包括ant-jsch.jarjsch.jar作为plugin dependencies

<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> 
2

我有同样的问题,并修复它! 请记住,您需要在ant lib目录中使用ant-jsch.jar(本地从ant或java安装)并更新jsch(在我的情况下它是jsch-0.1.46.jar)。

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

的错误很多开发商做:

  1. ant-jsch.jar过时(在这种情况下,任务是未知的蚂蚁)
  2. jsch不存在的或过时的蚂蚁lib目录
  3. 本土ant-jsch.jarjsch更换(我做到了......)

在最后2箱子蚂蚁知道SCP命令,但表示它不可用。

0

如果你不想在jsch jar添加到$ ANT_HOME/lib目录,或仍然有麻烦SCP正确的语法蚂蚁(像我一样),你可以回落到只使用EXEC:

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

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

0

我最近有类似的问题。在Windows系统上,使用Eclipse它来到了验证:

  • 蚂蚁工作
  • SCP作品本身,
  • 蚂蚁和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:[email protected]:/home/username/existingfolder"/> 
    </target> 
</project> 

如果你可以在Eclipse中运行它,那么你有某种形式的ANT工作,并且也有某种形式的WinSCP赋予工作。

如果您无法在Eclipse中使用它,请在具有build.xml的目录中打开命令窗口,然后从命令提示符处运行ant。 (它会自动拾取并运行build.xml文件)。

如果它不起作用,那么请检查您在Eclipse中的条目 - 因为它可能使用的是ANT的一组不同的路径,而不是命令行运行的Maven。从Eclipse内部退房: 窗口|
首选项|
Ant |
运行时间|
检查类路径条目。

蚂蚁家庭条目可蚀具体:例如:c:\eclipse\plugins\org.apache.ant_1.8.3_v20120321-1730\lib

全球参赛作品可以是不同的(例如,您的安装位置) - 诸如c:\dev\ant - 或任何您%ANT_HOME%目录已被设置为后一个安装。

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

一个可能的解决
- 安装ANT到c:\Users\username\.ant目录
- 设置ANT_HOME是c:\Users\username\.ant
- 在Eclipse中设置的Ant主页选项(相同的屏幕运行时 选项)来与命令行 (c:\Users\username\.ant)上的值相同。

注: 一个可能的缺点是,用户和系统设置可能是ANT一样的,但是你只需要获得可选的jar文件到未来的一个位置,以便把事情的工作。

测试的Maven:

以上拉古拉姆的答案类似,得到了依赖条件的权利是非常重要的。 使用塞德里克沃尔特页面的完整示例代码 - Apache Maven copy local file to a remote server server using SSH