@@ -77,6 +77,12 @@
presented to the user if that target is going to be skipped (based
on the if/unless attribute of the target).</p>
<p>Even though Ant installation already is quite simple in Ant1
(extract the archive and set two environment variables),
alternative ways to install Ant like using
<a href="http://java.sun.com/products/javawebstart/">Webstart</a> or
a "self-extracting" JAR file will be explored.</p>
<h2>Extensibility</h2>
<p>Ant2 like Ant1 uses build files written in XML as its main
@@ -109,6 +115,17 @@
directly (like some tasks "abuse" the
<code><touch></code> task in Ant1).</p>
<p>Ant2 will provide a way to define tasks that itself can have
tasks as child elements without knowing all defined tasks at
compile time. Discussions on ant-dev usually talk about
"container tasks" in this context.</p>
<p>The only way to &qout;include" common XML snippets so far
has been the usage of external SYSTEM entities, a mechanism that
is tied to DTDs and doesn't mix well with alternative
approaches like XML Schema. Ant2 will provide a built-in include
mechanism.</p>
<h1>New/Modified Features</h1>
<p>Ant2 will run the build process fully dynamically, which means
@@ -140,6 +157,12 @@
<li>Ant2 is going to require a JDK version 1.2 or above and a
JAXP compliant parser version 1.1 or above.</li>
<li>If you specify more than one target in another target's
depends attribute, Ant1 will execute these targets from left to
right (as long as the dependency tree permits it) - Ant2 will
not guarantee this behavior but will allow build file writers to
specify the order explicitly.</li>
</ul>
<h2>Support Integration of Ant Into Other Tools</h2>
@@ -164,6 +187,14 @@
<li>It will be possible to cancel a running build process.</li>
<li>Ant will detach from <code>System.err/.out/.in</code>
completely and communicate with the front-end via a well defined
API. The front-end will have to handle user input for tasks
that need it (tasks that ask for a password for example).</li>
<li>Tasks will provide some way to identify their attributes
from the outside. <i class="default">fill in details</i></li>
</ul>
<h2>More Control for Users and Build File Writers</h2>
@@ -174,6 +205,21 @@
within the build file and to modify the behavior of attached
listeners.</p>
<p>In Ant1 users have little control over how things work. There
are a couple of magic properties to make Ant chose a preferred
compiler or modify the CLASSPATH, but they are barely documented.
If users want to set these properties for every build process,
they have to learn the undocumented tricks of the
<code>ANT_OPTS</code> environment variable or the
<code>~/.antrc</code> file.</p>
<p>Ant2 will have a well defined system to specify user
preferences. This system will not only let user chose their
compiler but also give them a chance to provide default values for
attributes (say you always want the <code>debug</code> attribute
of the <code>javac</code> task to be true - unless it has been
disabled explicitly). <i class="comment">Need to give details once
they've been sorted out.</i></p>
<h2>Documentation System</h2>
@@ -187,6 +233,39 @@
<p class="comment">Is there something beyond "should become
better" right now?</p>
<h2>Data Types</h2>
<p>Ant1 supports a limited set of data types (fileset, patternset
and path) and at least up to Ant 1.3 it is not possible to
register custom data types without writing a task that does this.
Ant2 will provide a built-in mechanism to define new data
types.</p>
<p>Existing data-types will be improved, the files in a fileset
can be chosen based on more than just pattern matching for example
(modification time or permissions for example). Ant2 will have
built-in tasks for set operations.</p>
<p>Data types and properties will share the same name space and
follow the same scoping and precedence rules.
<i class="comment">${} again.</i></p>
<h2>Multithreading</h2>
<p>It will be possible to run several tasks in parallel - these
tasks will belong to the same target and all tasks will be joined
at the end of the target.</p>
<h2>Internationalization</h2>
<p>Ant2 itself will provide internationalized (error) messages and
provide utility classes to help task writers to do the same.
<i class="comment">These utility classes may very well come from a
different (Jakarta) project</i>.</p>
<p>Ant's primary language and the language of the build file
will continue to be English.</p>
<h1>Rejected Features</h1>
<p>This is list is not complete, it just highlights some of the