blob: 53cd876db77c1ab1ac6b8c0f75d84e9e06914151 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- Content Stylesheet for Site -->
<!-- start the processing -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<meta name="author" value="Adam Murdoch">
<meta name="email" value="adammurdoch@apache.org">
<title>Apache Myrmidon - VFS User Guide</title>
</head>
<body bgcolor="#ffffff" text="#000000" link="#525D76">
<table border="0" width="100%" cellspacing="0">
<!-- TOP IMAGE -->
<tr>
<td> <td colspan="2">
<a href="http://jakarta.apache.org"><img src="http://jakarta.apache.org/images/jakarta-logo.gif" align="left" border="0"/></a>
</td>
</td>
<td valign="bottom"><div align="right"><b><font size="+3" color="#525D76">Apache Myrmidon</font></b></div></td>
</tr>
</table>
<table border="0" width="100%" cellspacing="4">
<tr><td colspan="2">
<hr noshade="" size="1"/>
</td></tr>
<tr>
<!-- LEFT SIDE NAVIGATION -->
<td valign="top" nowrap="true">
<p><strong>Myrmidon</strong></p>
<ul>
<li> <a href="./index.html">Introduction</a>
</li>
<li> <a href="./getinvolved.html">Get Involved</a>
</li>
<li> <a href="./user.html">Building Myrmidon</a>
</li>
<li> <a href="./todo.html">Todo List</a>
</li>
</ul>
<p><strong>User Guide</strong></p>
<ul>
<li> <a href="./buildfile.html">Build file</a>
</li>
<li> <a href="./vfs.html">Virtual File System</a>
</li>
</ul>
<p><strong>Extending Ant</strong></p>
<ul>
<li> <a href="./task.html">Task Writers HOWTO</a>
</li>
<li> <a href="./classloader.html">ClassLoader HOWTO</a>
</li>
<li> <a href="./librarys.html">Library HOWTO</a>
</li>
</ul>
<p><strong>Container Design</strong></p>
<ul>
</ul>
</td>
<td align="left" valign="top">
<table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#525D76">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="Handling Files"><strong>Handling Files</strong></a>
</font>
</td></tr>
<tr><td>
<blockquote>
<p>Myrmidon includes a Virtual File System (VFS), which allows files from
different sources to be treated identically. The VFS currently supports
the following file types:</p>
<table>
<tr>
<td bgcolor="#039acc" colspan="" rowspan=""
valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
File System
</font>
</td>
<td bgcolor="#039acc" colspan="" rowspan=""
valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
Description
</font>
</td>
<td bgcolor="#039acc" colspan="" rowspan=""
valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
URL Format
</font>
</td>
</tr>
<tr>
<td bgcolor="#a0ddf0" colspan="" rowspan=""
valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
Local Files
</font>
</td>
<td bgcolor="#a0ddf0" colspan="" rowspan=""
valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
Files on the local file system.
</font>
</td>
<td bgcolor="#a0ddf0" colspan="" rowspan=""
valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
Three different formats are currently supported for local file names:
<ul>
<li><code>file://</code> <i>absolute-file-name</i></li>
<li>Absolute file names</li>
<li>Relative file names. These are resolved relative to the
project's base directory.
</li>
</ul>
</font>
</td>
</tr>
<tr>
<td bgcolor="#a0ddf0" colspan="" rowspan=""
valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
Zip Files
</font>
</td>
<td bgcolor="#a0ddf0" colspan="" rowspan=""
valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
The contents of Zip files (and Jar, War, and Ear files).
Currently, the VFS supports read-only access to Zip file contents,
and only for local Zip files.
</font>
</td>
<td bgcolor="#a0ddf0" colspan="" rowspan=""
valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
<code>zip://</code> <i>zip-file-path</i> [<code>!</code><i>absolute-path</i>]
</font>
</td>
</tr>
<tr>
<td bgcolor="#a0ddf0" colspan="" rowspan=""
valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
FTP
</font>
</td>
<td bgcolor="#a0ddf0" colspan="" rowspan=""
valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
Files on an FTP server.
</font>
</td>
<td bgcolor="#a0ddf0" colspan="" rowspan=""
valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
<code>ftp://</code> [[<i>password</i><code>:</code>] <i>username</i><code>@</code>] <i>hostname</i> [<code>:</code><i>port</i>] [<i>absolute-path</i>]
</font>
</td>
</tr>
<tr>
<td bgcolor="#a0ddf0" colspan="" rowspan=""
valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
SMB
</font>
</td>
<td bgcolor="#a0ddf0" colspan="" rowspan=""
valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
Files on a CFIS server, such as Samba or Windows shares.
</font>
</td>
<td bgcolor="#a0ddf0" colspan="" rowspan=""
valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
<code>smb://</code> [[<i>password</i><code>:</code>] <i>username</i><code>@</code>] <i>hostname</i> [<code>:</code><i>port</i>] [<i>absolute-path</i>]
</font>
</td>
</tr>
</table>
<p>Here are some example URLs:</p>
<ul>
<li><code>build/classes</code></li>
<li><code>c:\program files\ant\bin</code></li>
<li><code>file://C:/program files/ant</code></li>
<li><code>zip://build/lib/ant.jar!/org/apache/tools</code></li>
<li><code>ftp://adam@somehost/pub/downloads</code></li>
<li><code>smb://password:adam@somehost/home/adam</code></li>
</ul>
<p>Currently, there are only a handful of VFS aware tasks. This will grow
as more tasks are ported to the new API, and data types.</p>
<table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="File Sets"><strong>File Sets</strong></a>
</font>
</td></tr>
<tr><td>
<blockquote>
<p>A file set in Myrmidon is more general than Ant 1's concept of a file set.
Firstly, there is more than one type of file set. Secondly, they are VFS enabled.
File sets are automatically converted to a <a href="#Paths">path</a>, and so
can be used anywhere that a path can.</p>
<h3><code>&lt;v-fileset&gt;</code></h3>
<p>This is the equivalent of Ant 1's <code>&lt;fileset&gt;</code> (The name
is temporary, it will be changed to <code>&lt;fileset&gt;</code> once more
porting work as been completed).</p>
<p>Rather than use a set of include and exclude patterns to choose the files
that make up the file set, <code>&lt;v-fileset&gt;</code> takes zero or more
<a href="#File Selectors">file selectors</a>. File selectors can be used to
select files based on any attribute of the file, rather than just the name.
You can use <code>&lt;name&gt;</code> selectors to achieve the same result
as using includes or excludes.</p>
<p>A <code>&lt;v-fileset&gt;</code> element takes the following attributes:</p>
<table>
<tr>
<td bgcolor="#039acc" colspan="" rowspan=""
valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
Attribute
</font>
</td>
<td bgcolor="#039acc" colspan="" rowspan=""
valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
Description
</font>
</td>
<td bgcolor="#039acc" colspan="" rowspan=""
valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
Default Value
</font>
</td>
</tr>
<tr>
<td bgcolor="#a0ddf0" colspan="" rowspan=""
valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
dir
</font>
</td>
<td bgcolor="#a0ddf0" colspan="" rowspan=""
valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
The base directory for the file set. This can be any URL that the
VFS supports.
</font>
</td>
<td bgcolor="#a0ddf0" colspan="" rowspan=""
valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
Required
</font>
</td>
</tr>
</table>
<p>A <code>&lt;v-fileset&gt;</code> element takes any number of nested
<a href="#File Selectors">file selector</a> elements. To be included in the
file set, a file must be selected by all the file selectors. That is, the
file selectors are implicitly AND-ed together. If no file selector is provided,
all the files and directories are included in the set.</p>
<p>An example:</p>
<div align="left">
<table cellspacing="4" cellpadding="0" border="0">
<tr>
<td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
<td bgcolor="#023264" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
<td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
</tr>
<tr>
<td bgcolor="#023264" width="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
<td bgcolor="#ffffff"><pre>
&lt;v-fileset dir=&quot;src&quot;&gt;
&lt;name pattern=&quot;org/apache/tools/ant/**&quot;/&gt;
&lt;is-file/&gt;
&lt;/v-fileset&gt;
</pre></td>
<td bgcolor="#023264" width="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
</tr>
<tr>
<td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
<td bgcolor="#023264" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
<td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
</tr>
</table>
</div>
<h3><code>&lt;flat-fileset&gt;</code></h3>
<p>This file set takes a set of nested file sets and paths, and flattens them
into a single directory. It can be used as a way of converting a path into a
file set. It can also be used as a replacement for the <code>flatten</code>
attribute for the copy and move tasks.</p>
<p>A <code>&lt;flat-fileset&gt;</code> element takes no attributes, and a set
of nested paths or file sets.</p>
<p>An example:</p>
<div align="left">
<table cellspacing="4" cellpadding="0" border="0">
<tr>
<td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
<td bgcolor="#023264" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
<td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
</tr>
<tr>
<td bgcolor="#023264" width="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
<td bgcolor="#ffffff"><pre>
&lt;v-copy todir=&quot;dist/lib&quot;&gt;
&lt;flat-fileset&gt;
&lt;v-fileset dir=&quot;build/lib&quot;&gt;
&lt;basename pattern=&quot;*.jar&quot;/&gt;
&lt;v-fileset&gt;
&lt;v-path path=&quot;${classpath}&quot;/&gt;
&lt;/flat-fileset&gt;
&lt;/v-copy&gt;
</pre></td>
<td bgcolor="#023264" width="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
</tr>
<tr>
<td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
<td bgcolor="#023264" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
<td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
</tr>
</table>
</div>
<h3><code>&lt;mapped-fileset&gt;</code></h3>
<p>A fileset that applies a <a href="buildfile.html#File Name Mappers">file name mapper</a>
to a nested fileset.
</p>
</blockquote>
</td></tr>
</table>
<table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="Paths"><strong>Paths</strong></a>
</font>
</td></tr>
<tr><td>
<blockquote>
<p>Paths are an ordered list of files.</p>
<h3><code>&lt;v-path&gt;</code></h3>
<p>This is the equivalent of Ant 1's <code>&lt;path&gt;</code>.</p>
<h3><code>&lt;filtered-path&gt;</code></h3>
<p>A path that applies file selectors to a set of nested file sets and paths.</p>
</blockquote>
</td></tr>
</table>
<table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr><td bgcolor="#828DA6">
<font color="#ffffff" face="arial,helvetica,sanserif">
<a name="File Selectors"><strong>File Selectors</strong></a>
</font>
</td></tr>
<tr><td>
<blockquote>
<p>File selectors are used to select files from file sets and paths.</p>
<h3><code>&lt;and&gt;</code></h3>
<p>Combines zero or more file selectors, using AND. An empty <code>&lt;and&gt;</code>
selector accepts all files.</p>
<h3><code>&lt;basename&gt;</code></h3>
<p>Selects files whose base name matches an Ant 1 style pattern, or a regular
expression.</p>
<h3><code>&lt;condition&gt;</code></h3>
<p>Takes a set of <a href="buildfile.html#Conditions">conditions</a>. If
the conditions evaluate to true, then select every file. Otherwise,
select no files.</p>
<h3><code>&lt;exists&gt;</code></h3>
<p>Selects files that exist.</p>
<h3><code>&lt;is-empty-folder&gt;</code></h3>
<p>Selects empty folders, that is, folders that have no children.</p>
<h3><code>&lt;is-folder&gt;</code></h3>
<p>Selects folders, does not select regular files.</p>
<h3><code>&lt;is-file&gt;</code></h3>
<p>Selects regular files, does not select folders.</p>
<h3><code>&lt;name&gt;</code></h3>
<p>Selects files whose path in a file set matches an Ant 1 style pattern, or
a regular expression.</p>
<h3><code>&lt;not&gt;</code></h3>
<p>Selects files that are not selected by a nested file selector.</p>
<h3><code>&lt;or&gt;</code></h3>
<p>Combines zero or more file selectors, using OR. An empty <code>&lt;or&gt;</code>
selector accepts all files.</p>
<h3><code>&lt;url&gt;</code></h3>
<p>Selects files whose URL matches an Ant 1 style pattern, or a regular expression.</p>
</blockquote>
</td></tr>
</table>
</blockquote>
</td></tr>
</table>
</td>
</tr>
<!-- FOOTER -->
<tr><td colspan="2">
<hr noshade="" size="1"/>
</td></tr>
<tr><td colspan="2">
<div align="center"><font color="#525D76" size="-1"><em>
Copyright &#169; 2000-2002, Apache Software Foundation
</em></font></div>
</td></tr>
</table>
</body>
</html>
<!-- end the processing -->