git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271578 13f79535-47bb-0310-9956-ffa450edef68master
@@ -133,6 +133,84 @@ by Myrmidon.</p> | |||
(e.g. Zip/Jar/Tar file systems, gzip/encoding file systems, virtual file | |||
systems). | |||
</li> | |||
</ul> | |||
</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 Data-Types and Tasks"><strong>File Data-Types and Tasks</strong></a> | |||
</font> | |||
</td></tr> | |||
<tr><td> | |||
<blockquote> | |||
<p>The file data-types, such as <code><fileset></code> and | |||
<code><path></code>, are some of the most widely used parts of Ant 1.x. | |||
Unfortunately, they aren't particularly extensible.</p> | |||
<ul> | |||
<li>Redesign the file data-types, replacing them with an interface-based | |||
API, plus a set of implementations. The API should use the VFS file | |||
<code>FileObject</code>, rather than <code>java.io.File</code>. | |||
This process has started, in the <code>antlib.vfile</code> package. | |||
</li> | |||
<li>File Selectors: | |||
<ul> | |||
<li>Change <code>AbstractNameFileSelector</code> to use Ant 1 style patterns | |||
matches, rather than Globs patterns.</li> | |||
<li>Add 'defaultexcludes' to <code>DefaultFileSet</code>. Also add a | |||
file selector implementation that matches everything except the default | |||
excludes.</li> | |||
<li>Add a condition -> file selector adaptor, so that arbitrary conditions | |||
can be used to select files.</li> | |||
<li>Add a name selector that loads patterns from a file.</li> | |||
<li>Add more selector implementations: size and last-modified comparisons, | |||
checksum comparison, byte-wise content comparison.</li> | |||
</ul></li> | |||
<li>File Name Mappers: | |||
<ul> | |||
<li>Add a file name mapper interface, and port the current Mapper | |||
implementations to it.</li> | |||
</ul></li> | |||
<li>File Sets: | |||
<ul> | |||
<li>Add a file set implementation that uses a mapper to transform a nested | |||
file set.</li> | |||
<li>Add a file set implementation that provides the union of several | |||
nested file sets (that is, a file set that merges several file sets | |||
together).</li> | |||
<li>Add a file set implementation that filters files that are up-to-date | |||
WRT some other file. Alternatively, this might be better done using a | |||
file selector.</li> | |||
</ul></li> | |||
<li>Paths: | |||
<ul> | |||
<li>Add path implementations that evaluate to the system classpath, | |||
and the ant runtime classpath. Or, more generally, combine this with | |||
<code>ClassLoaderManager</code> to evaluate to the classpath of any | |||
'library' (e.g. system classpath, ant runtime, tools.jar, | |||
an antlib, an installed extension, or the system classes of another JVM | |||
for cross-compiling).</li> | |||
</ul></li> | |||
<li>File Filters: | |||
<ul> | |||
<li>Add a file filter interface, and use it in the copy task.</li> | |||
<li>Add a filter implementation that applies the token replacement that | |||
the old copy task provides.</li> | |||
<li>Add a filter that does cr/lf translation.</li> | |||
<li>Add a gzip/gunzip filter.</li> | |||
<li>Add a filter that applies character set encode/decode.</li> | |||
</ul></li> | |||
<li>Copy task: | |||
<ul> | |||
<li>Implement 'preservelastmodified', 'overwrite', and 'includeemptydirs'.</li> | |||
<li>Support a file name mapper.</li> | |||
<li>Support file filters.</li> | |||
</ul></li> | |||
<li>Implement the <code><move></code>, <code><delete></code>, | |||
<code><touch></code> and <code><mkdir></code> tasks on top | |||
of the VFS and the new file data-types. Might be some scope for generalising | |||
'touch' and 'mkdir' into a single task.</li> | |||
</ul> | |||
</blockquote> | |||
</td></tr> | |||
@@ -73,6 +73,79 @@ by Myrmidon.</p> | |||
</subsection> | |||
<subsection name="File Data-Types and Tasks"> | |||
<p>The file data-types, such as <code><fileset></code> and | |||
<code><path></code>, are some of the most widely used parts of Ant 1.x. | |||
Unfortunately, they aren't particularly extensible.</p> | |||
<ul> | |||
<li>Redesign the file data-types, replacing them with an interface-based | |||
API, plus a set of implementations. The API should use the VFS file | |||
<code>FileObject</code>, rather than <code>java.io.File</code>. | |||
This process has started, in the <code>antlib.vfile</code> package. | |||
</li> | |||
<li>File Selectors: | |||
<ul> | |||
<li>Change <code>AbstractNameFileSelector</code> to use Ant 1 style patterns | |||
matches, rather than Globs patterns.</li> | |||
<li>Add 'defaultexcludes' to <code>DefaultFileSet</code>. Also add a | |||
file selector implementation that matches everything except the default | |||
excludes.</li> | |||
<li>Add a condition -> file selector adaptor, so that arbitrary conditions | |||
can be used to select files.</li> | |||
<li>Add a name selector that loads patterns from a file.</li> | |||
<li>Add more selector implementations: size and last-modified comparisons, | |||
checksum comparison, byte-wise content comparison.</li> | |||
</ul></li> | |||
<li>File Name Mappers: | |||
<ul> | |||
<li>Add a file name mapper interface, and port the current Mapper | |||
implementations to it.</li> | |||
</ul></li> | |||
<li>File Sets: | |||
<ul> | |||
<li>Add a file set implementation that uses a mapper to transform a nested | |||
file set.</li> | |||
<li>Add a file set implementation that provides the union of several | |||
nested file sets (that is, a file set that merges several file sets | |||
together).</li> | |||
<li>Add a file set implementation that filters files that are up-to-date | |||
WRT some other file. Alternatively, this might be better done using a | |||
file selector.</li> | |||
</ul></li> | |||
<li>Paths: | |||
<ul> | |||
<li>Add path implementations that evaluate to the system classpath, | |||
and the ant runtime classpath. Or, more generally, combine this with | |||
<code>ClassLoaderManager</code> to evaluate to the classpath of any | |||
'library' (e.g. system classpath, ant runtime, tools.jar, | |||
an antlib, an installed extension, or the system classes of another JVM | |||
for cross-compiling).</li> | |||
</ul></li> | |||
<li>File Filters: | |||
<ul> | |||
<li>Add a file filter interface, and use it in the copy task.</li> | |||
<li>Add a filter implementation that applies the token replacement that | |||
the old copy task provides.</li> | |||
<li>Add a filter that does cr/lf translation.</li> | |||
<li>Add a gzip/gunzip filter.</li> | |||
<li>Add a filter that applies character set encode/decode.</li> | |||
</ul></li> | |||
<li>Copy task: | |||
<ul> | |||
<li>Implement 'preservelastmodified', 'overwrite', and 'includeemptydirs'.</li> | |||
<li>Support a file name mapper.</li> | |||
<li>Support file filters.</li> | |||
</ul></li> | |||
<li>Implement the <code><move></code>, <code><delete></code>, | |||
<code><touch></code> and <code><mkdir></code> tasks on top | |||
of the VFS and the new file data-types. Might be some scope for generalising | |||
'touch' and 'mkdir' into a single task.</li> | |||
</ul> | |||
</subsection> | |||
<subsection name="Command-line and Configuration Files"> | |||
<p>One of the goals of Ant 2 is to allow the user to easily customise and | |||