Filed under: Automation, — Tags: Ant, jsch, ssh, sshexec — Thomas Sundberg — 2012-01-16
You have to patch Ant in order to run ssh from it. It needs a ssh implementation that isn't bundled with the default distribution. If you just define a task like this:
<sshexec host="somehost" username="dude" password="yo" command="touch somefile"/>
Then you will get the error message below back.
BUILD FAILED /Users/tsu/projects/linkon/fp/sabine/resources/deploy/build.xml:57: Problem: failed to create task or type sshexec Cause: the class org.apache.tools.ant.taskdefs.optional.ssh.SSHExec was not found. This looks like one of Ant's optional components. Action: Check that the appropriate optional JAR exists in -/usr/share/ant/lib -/Users/tsu/.ant/lib -a directory added on the command line with the -lib argument Do not panic, this is a common problem. The commonest cause is a missing JAR. This is not a bug; it is a configuration problem
The solution is to download an ssh implementation and add it to your Ant installation. A valid implementation can be
downloaded from JCraft. When you have downloaded and verified
jsch-0.1.45.jar all you have to do is add
it to your Ant installation. My installation was located at
/usr/share/ant/ so I added it to
I you are on a Mac, which I am, then this may not be sufficient. If you still get the error above, then take a look at a blog post I just wrote about ant being broken on Mac.