Ubuntu Maven Ant SCP错误
当我使用ant命令运行“maven antrun插件”(maven 3.0.3)时: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的存储库我也遇到了同样的问题)你忘了设置任务定
<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开发环境中工作
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页面中的完整示例代码-我也遇到了类似的问题