|
@@ -24,6 +24,34 @@ |
|
|
|
|
|
|
|
|
</subsection> |
|
|
</subsection> |
|
|
|
|
|
|
|
|
|
|
|
<subsection name="Paths"> |
|
|
|
|
|
|
|
|
|
|
|
<p>Consider allowing the user to configure the ant system by setting the |
|
|
|
|
|
following path types.</p> |
|
|
|
|
|
<ul> |
|
|
|
|
|
<li>ant.type.path: path that is used to search for the type libraries</li> |
|
|
|
|
|
<li>ant.ext.path: path that is used to search for "Optional Packages" |
|
|
|
|
|
or extensions.</li> |
|
|
|
|
|
</ul> |
|
|
|
|
|
<p> |
|
|
|
|
|
The default search path will probably include a per-user path element, |
|
|
|
|
|
a workspace path element and a system path elemtn that are searched in |
|
|
|
|
|
that order. Some possible defaults; |
|
|
|
|
|
</p> |
|
|
|
|
|
<ul> |
|
|
|
|
|
<li>Unix Per-user: ${user.home}/.ant/lib, ${user.home}/.ant/ext</li> |
|
|
|
|
|
<li>Windows Per-user: ${user.home}/ant/lib, ${user.home}/ant/ext</li> |
|
|
|
|
|
<li>MacOSX Per-user: ${user.home}/Library/Ant/lib, |
|
|
|
|
|
${user.home}/Library/Ant/ext</li> |
|
|
|
|
|
<li>Unix System-wide: /opt/ant/lib, /opt/ant/ext</li> |
|
|
|
|
|
<li>Unix System-wide: /usr/local/ant/lib, /usr/local/ant/ext</li> |
|
|
|
|
|
<li>Windows System-wide: %SYS_DRIVE%/Program Files/ant/lib, |
|
|
|
|
|
%SYS_DRIVE%/Program Files/ant/ext</li> |
|
|
|
|
|
<li>MacOSX System-wide: /Library/Ant/lib, /Library/Ant/ant/ext</li> |
|
|
|
|
|
</ul> |
|
|
|
|
|
|
|
|
|
|
|
</subsection> |
|
|
|
|
|
|
|
|
<subsection name="Ant 1.x Compatibility"> |
|
|
<subsection name="Ant 1.x Compatibility"> |
|
|
|
|
|
|
|
|
<p>There are 2 parts to this broad topic: Allow Ant 1.x build scripts to be |
|
|
<p>There are 2 parts to this broad topic: Allow Ant 1.x build scripts to be |
|
@@ -64,67 +92,97 @@ |
|
|
|
|
|
|
|
|
<subsection name="File Data-Types and Tasks"> |
|
|
<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> |
|
|
|
|
|
|
|
|
<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> |
|
|
<ul> |
|
|
<li>Redesign the file data-types, replacing them with an interface-based |
|
|
<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 |
|
|
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. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<code>FileObject</code>, rather than |
|
|
|
|
|
<code>java.io.File</code>. |
|
|
|
|
|
This process has started, in the |
|
|
|
|
|
<code>antlib.vfile</code> package. |
|
|
|
|
|
|
|
|
</li> |
|
|
</li> |
|
|
<li>File Selectors: |
|
|
<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 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> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<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 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 conditions: |
|
|
<li>File conditions: |
|
|
<ul> |
|
|
|
|
|
<li>Add more condition implementations that perform checks on files. |
|
|
|
|
|
One that searches a path for a file would be useful.</li> |
|
|
|
|
|
</ul></li> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<ul> |
|
|
|
|
|
<li>Add more condition implementations that perform checks on files. |
|
|
|
|
|
One that searches a path for a file would be useful.</li> |
|
|
|
|
|
</ul> |
|
|
|
|
|
</li> |
|
|
<li>File Name Mappers: |
|
|
<li>File Name Mappers: |
|
|
<ul> |
|
|
|
|
|
<li>Change FileNameMapper.mapFileName() to take vfs.FileName objects.</li> |
|
|
|
|
|
<li>Move the current mapper implementations across to antlib.</li> |
|
|
|
|
|
</ul></li> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<ul> |
|
|
|
|
|
<li>Change FileNameMapper.mapFileName() to take vfs.FileName objects.</li> |
|
|
|
|
|
<li>Move the current mapper implementations across to antlib.</li> |
|
|
|
|
|
</ul> |
|
|
|
|
|
</li> |
|
|
<li>File Sets: |
|
|
<li>File Sets: |
|
|
<ul> |
|
|
|
|
|
<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 as a |
|
|
|
|
|
file selector.</li> |
|
|
|
|
|
</ul></li> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<ul> |
|
|
|
|
|
<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 as a |
|
|
|
|
|
file selector.</li> |
|
|
|
|
|
</ul> |
|
|
|
|
|
</li> |
|
|
<li>Paths: |
|
|
<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> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<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>Port across the Ant 1 file filter proposal, once it is complete.</li> |
|
|
<li>Port across the Ant 1 file filter proposal, once it is complete.</li> |
|
|
<li>Copy task: |
|
|
<li>Copy task: |
|
|
<ul> |
|
|
|
|
|
<li>Implement 'preservelastmodified', 'overwrite', and 'includeemptydirs'.</li> |
|
|
|
|
|
<li>Support a file name mapper.</li> |
|
|
|
|
|
<li>Support file filters.</li> |
|
|
|
|
|
<li>Detect and handle destination file name collisions.</li> |
|
|
|
|
|
</ul></li> |
|
|
|
|
|
<li>Implement the <code><move></code>, <code><delete></code>, |
|
|
|
|
|
<code><touch></code> and <code><mkdir></code> tasks on top |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<ul> |
|
|
|
|
|
<li>Implement 'preservelastmodified', 'overwrite', and 'includeemptydirs'.</li> |
|
|
|
|
|
<li>Support a file name mapper.</li> |
|
|
|
|
|
<li>Support file filters.</li> |
|
|
|
|
|
<li>Detect and handle destination file name collisions.</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 |
|
|
of the VFS and the new file data-types. Might be some scope for generalising |
|
|
'touch' and 'mkdir' into a single task.</li> |
|
|
|
|
|
|
|
|
'touch' and 'mkdir' into a single task. |
|
|
|
|
|
</li> |
|
|
</ul> |
|
|
</ul> |
|
|
|
|
|
|
|
|
</subsection> |
|
|
</subsection> |
|
@@ -142,8 +200,12 @@ |
|
|
configuration files.</li> |
|
|
configuration files.</li> |
|
|
|
|
|
|
|
|
<li>Allow the following via config files: |
|
|
<li>Allow the following via config files: |
|
|
|
|
|
|
|
|
<ul> |
|
|
<ul> |
|
|
<li>Add (or override) the <code>lib</code> and <code>ext</code> directories.</li> |
|
|
|
|
|
|
|
|
<li>Add (or override) the |
|
|
|
|
|
<code>lib</code> and |
|
|
|
|
|
<code>ext</code> directories. |
|
|
|
|
|
</li> |
|
|
<li>Enable more than one listener, and configure the listeners from |
|
|
<li>Enable more than one listener, and configure the listeners from |
|
|
the conents of the config file.</li> |
|
|
the conents of the config file.</li> |
|
|
<li>Import libraries, and set properties.</li> |
|
|
<li>Import libraries, and set properties.</li> |
|
@@ -200,7 +262,9 @@ |
|
|
<ul> |
|
|
<ul> |
|
|
<li>Search through the code for 'TODO' items and fix them.</li> |
|
|
<li>Search through the code for 'TODO' items and fix them.</li> |
|
|
<li>Allow service factories to be configured from the contents of the |
|
|
<li>Allow service factories to be configured from the contents of the |
|
|
<code>ant-services.xml</code> descriptor.</li> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<code>ant-services.xml</code> descriptor. |
|
|
|
|
|
</li> |
|
|
<li>Route external process stdout and stderr through the logger.</li> |
|
|
<li>Route external process stdout and stderr through the logger.</li> |
|
|
<li>Add verbosity level to ProjectListener LogEvent</li> |
|
|
<li>Add verbosity level to ProjectListener LogEvent</li> |
|
|
<li>Fire ProjectListener events taskFinished(), targetFinished() and |
|
|
<li>Fire ProjectListener events taskFinished(), targetFinished() and |
|
@@ -212,17 +276,33 @@ |
|
|
<li>Detect duplicate type names.</li> |
|
|
<li>Detect duplicate type names.</li> |
|
|
<li>Add fully qualified type names, based on antlib name and type shorthand name. |
|
|
<li>Add fully qualified type names, based on antlib name and type shorthand name. |
|
|
Allow these to be used in build files in addition to the shorthand names.</li> |
|
|
Allow these to be used in build files in addition to the shorthand names.</li> |
|
|
<li>Move the <code><http></code> and <code><socket></code> |
|
|
|
|
|
conditions to an antlib. Need to resolve how these will be passed a logger.</li> |
|
|
|
|
|
<li>Make the <code><uptodate></code> task a condition, and move to |
|
|
|
|
|
an antlib.</li> |
|
|
|
|
|
<li>Split up <code><is-set></code> condition into is-set and is-true conditions.</li> |
|
|
|
|
|
<li>Allow the <code><if></code> task to take any condition implementation.</li> |
|
|
|
|
|
<li>Add an else block to the <code><if></code> task.</li> |
|
|
|
|
|
<li>Split the <code><available></code> condition into separate conditions |
|
|
|
|
|
that test for the availability of a class, or a resource.</li> |
|
|
|
|
|
<li>Move <code>crimson.jar</code> to <code>bin/lib</code> in the distribution, |
|
|
|
|
|
and make to other jars via the extension mechanism.</li> |
|
|
|
|
|
|
|
|
<li>Move the |
|
|
|
|
|
<code><http></code> and |
|
|
|
|
|
<code><socket></code> |
|
|
|
|
|
conditions to an antlib. Need to resolve how these will be passed a logger. |
|
|
|
|
|
</li> |
|
|
|
|
|
<li>Make the |
|
|
|
|
|
<code><uptodate></code> task a condition, and move to |
|
|
|
|
|
an antlib. |
|
|
|
|
|
</li> |
|
|
|
|
|
<li>Split up |
|
|
|
|
|
<code><is-set></code> condition into is-set and is-true conditions. |
|
|
|
|
|
</li> |
|
|
|
|
|
<li>Allow the |
|
|
|
|
|
<code><if></code> task to take any condition implementation. |
|
|
|
|
|
</li> |
|
|
|
|
|
<li>Add an else block to the |
|
|
|
|
|
<code><if></code> task. |
|
|
|
|
|
</li> |
|
|
|
|
|
<li>Split the |
|
|
|
|
|
<code><available></code> condition into separate conditions |
|
|
|
|
|
that test for the availability of a class, or a resource. |
|
|
|
|
|
</li> |
|
|
|
|
|
<li>Move |
|
|
|
|
|
<code>crimson.jar</code> to |
|
|
|
|
|
<code>bin/lib</code> in the distribution, |
|
|
|
|
|
and make to other jars via the extension mechanism. |
|
|
|
|
|
</li> |
|
|
<li>Unit tests.</li> |
|
|
<li>Unit tests.</li> |
|
|
</ul> |
|
|
</ul> |
|
|
|
|
|
|
|
|