<document>

    <properties>
        <title>Download</title>
        <author email="adammurdoch@apache.org">Adam Murdoch</author>
    </properties>

    <body>
        <section name="Download">
            <p>
                Nightly builds of Commons VFS can be found
                <a href="http://cvs.apache.org/builds/jakarta-commons/nightly/commons-vfs/">here</a>.
            </p>
            <p>
                You will also need to download the jars used by Commons VFS.
                These are listed below:
            </p>
            <table>
                <tr>
                    <th>Dependency</th>
                    <th>Required For</th>
                </tr>
                <tr>
                    <td>
                        Jakarta
                        <a href="http://jakarta.apache.org/commons/logging/">Commons Logging</a>
                        Version 1.0.3 or later.
                    </td>
                    <td>All</td>
                </tr>
                <tr>
                    <td>
                        Jakarta
                        <a href="http://jakarta.apache.org/commons/collections/">Commons Collections</a>
                        Version 3.1
                    </td>
                    <td>LRU Cache (optional)</td>
                </tr>
                <tr>
                    <td>
                        Jakarta
                        <a href="http://jakarta.apache.org/commons/net/">Commons Net</a> Version 1.2.1 or later.
                    </td>
                    <td rowspan="2">FTP</td>
                </tr>
                <tr>
                    <td>
                        Jakarta
                        <a href="http://jakarta.apache.org/oro/">ORO</a> Version 2.0.8
                    </td>
                </tr>
                <tr>
                    <td>
                        Jakarta
                        <a href="http://jakarta.apache.org/commons/httpclient/">Commons Httpclient</a>.
                        Version 2.0 or later.
                    </td>
                    <td>
                        WebDAV
                        <br/>
                        HTTP (optional).
                    </td>
                </tr>
                <tr>
                    <td>
                        jdom.org
                        <a href="http://www.jdom.org">JDom</a>.
                        Version 1.0.<br />
                        Only needet if you use webdav 2.2+
                    </td>
                    <td>
                        WebDAV
                    </td>
                </tr>
                <tr>
                    <td>
                        Jakarta
                        <a href="http://jakarta.apache.org/slide/">Slide</a> Version 2.2pre1 (20050629.002841)<br />
                        You only need this bleeding edge version if you would like to use the RandomAccessContent with webdav
                    </td>
                    <td>WebDAV</td>
                </tr>
                <tr>
                    <td>
                        <a href="http://jcifs.samba.org/">jCIFS</a> Version 0.8.3 or later.
                    </td>
                    <td>CIFS</td>
                </tr>
                <tr>
                    <td>
                        <a href="http://www.jcraft.com/jsch/">JSch</a> Version 0.1.14 or later.
                    </td>
                    <td>SFTP</td>
                </tr>
                <tr>
                    <td>
                        <a href="http://jakarta.apache.org/commons/sandbox/compress/">Commons Compress</a> Nightly build 20040530<br />
                        There are no other nigtlies than the one I created for maven, so please download it from the link below until this changes:<br/>
                        <a href="http://www.ibiblio.org/maven/commons-compress/jars/commons-compress-20040530.jar">http://www.ibiblio.org/maven/commons-compress/jars/commons-compress-20040530.jar</a>
                    </td>
                    <td>tar, bz2</td>
                </tr>
            </table>
        </section>
        <section name="Building Commons VFS">
            <p>
                To obtain the Commons VFS source, you can either:
            </p>
            <ul>
                <li>
                    Check the source out of SVN, as described on the
                    <a href="cvs-usage.html">Source Repository</a> page.
                </li>
                <li>
                    Download a nightly source snapshot from
                    <a href="http://cvs.apache.org/builds/jakarta-commons/nightly/commons-vfs/">here</a>.
                </li>
            </ul>
            <p>
                To build Commons VFS, you can either:
            </p>
            <ul>
                <li>
                    Use
                    <a href="http://ant.apache.org">Ant</a> 1.5 or later.
                    Use the
                    <code>build.xml</code> file in the root source
                    directory.  The default target downloads the dependencies
                    used to build Commons VFS, and then builds the jar file
                    into the
                    <code>target</code> directory.
                </li>
                <li>
                    Use
                    <a href="http://jakarta.apache.org/turbine/maven">Maven</a>
                    beta 9 or later. Use the
                    <code>jar</code> goal to download
                    the dependencies, and build the VFS jar.  Maven builds the
                    jar file into the
                    <code>target</code> directory.
                </li>
            </ul>
        </section>
    </body>
</document>