Browse Source

Add some todo items related to extension /antlib paths

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271939 13f79535-47bb-0310-9956-ffa450edef68
master
Peter Donald 23 years ago
parent
commit
1270b8f454
1 changed files with 141 additions and 61 deletions
  1. +141
    -61
      proposal/myrmidon/src/xdocs/todo.xml

+ 141
- 61
proposal/myrmidon/src/xdocs/todo.xml View File

@@ -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>&lt;fileset&gt;</code> and
<code>&lt;path&gt;</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>&lt;fileset&gt;</code> and

<code>&lt;path&gt;</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>&lt;move&gt;</code>, <code>&lt;delete&gt;</code>,
<code>&lt;touch&gt;</code> and <code>&lt;mkdir&gt;</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>&lt;move&gt;</code>,
<code>&lt;delete&gt;</code>,

<code>&lt;touch&gt;</code> and
<code>&lt;mkdir&gt;</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>&lt;http&gt;</code> and <code>&lt;socket&gt;</code>
conditions to an antlib. Need to resolve how these will be passed a logger.</li>
<li>Make the <code>&lt;uptodate&gt;</code> task a condition, and move to
an antlib.</li>
<li>Split up <code>&lt;is-set&gt;</code> condition into is-set and is-true conditions.</li>
<li>Allow the <code>&lt;if&gt;</code> task to take any condition implementation.</li>
<li>Add an else block to the <code>&lt;if&gt;</code> task.</li>
<li>Split the <code>&lt;available&gt;</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>&lt;http&gt;</code> and
<code>&lt;socket&gt;</code>
conditions to an antlib. Need to resolve how these will be passed a logger.
</li>
<li>Make the
<code>&lt;uptodate&gt;</code> task a condition, and move to
an antlib.
</li>
<li>Split up
<code>&lt;is-set&gt;</code> condition into is-set and is-true conditions.
</li>
<li>Allow the
<code>&lt;if&gt;</code> task to take any condition implementation.
</li>
<li>Add an else block to the
<code>&lt;if&gt;</code> task.
</li>
<li>Split the
<code>&lt;available&gt;</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>




Loading…
Cancel
Save