Deploying with SCP

Another deployment task, available since Ant 1.6, is the scp task, which copies a file or FileSet to or from a remote machine running the SSH daemon. This task is an optional one, and you need jsch.jar in the Ant lib directory to use it (you can get jsch.jar at http://www.jcraft.com/jsch/index.html).

This task is handy for deployment. For example, here's how to deploy a single file to a remote host (any host you connect to must be listed in your knownhosts file unless you specifically set the trust attribute to yes or true):

<scp file="Project.jar"  
    todir="user:password@antmegacorp.com:/home/steven/cgi-bin"/>

You can use the password attribute explicitly to set the password:

<scp file="Project.jar"  
    todir="user@antmegacorp.com:/home/steven/cgi-bin""  
    password="password"/>

Here's how to copy a remote file to a local machine:

<scp file="user:password@antmegacorp.com:/home/steven/cgi-bin/Project.jar" 
    todir="${archive}"/>

Here's how to copy a set of files using a fileset:

<scp todir="user:password@antmegacorp.com:/home/steven/source">
    <fileset dir="${src}">
        <include name="**/*.java"/>
    </fileset>
</scp>

Example 8-3 gives a complete example build file using the scp task for deployment. (It uses the remote machine's IP address instead of naming the remote server.)

Example 8-3. Using scp (ch08/scp/build.xml)

<?xml version="1.0" ?> <project default="main"> <property name="message" value="Deploying the .jar file." /> <property name="src" location="source" /> <property name="output" ...

Get Ant: The Definitive Guide, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.