mirror of
https://github.com/apache/ant.git
synced 2025-05-19 06:24:47 +00:00
55 lines
3.0 KiB
HTML
55 lines
3.0 KiB
HTML
|
<html>
|
||
|
<head>
|
||
|
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
|
||
|
<title>Ant Functional Requirements Document</title>
|
||
|
</head>
|
||
|
<body>
|
||
|
<h2>Ant Functional Requirements</h2>
|
||
|
<h3>Roles</h3>
|
||
|
<p><b>User: </b>runs Ant with a complete build specification and/or
|
||
|
writes Ant build specifications.</p>
|
||
|
<p><b>Task Developer: </b>writes/modifies Ant tasks.</p>
|
||
|
<p><b>Extensions Developer: </b>develops extensions like a GUI, IDE plugin,
|
||
|
(scripting extension?)</p>
|
||
|
<p><b>Core Developer: </b>works on the Ant core</p>
|
||
|
<h3>Requirements from the Ant User perspective</h3>
|
||
|
<p>It should be easy to write a build file for small Java programs. It should
|
||
|
be possible to write a build file set for large Java systems. Maintenance
|
||
|
of such a set should be easy (e.g. no duplication of information).</p>
|
||
|
<p>Every build process contains dependencies (e.g. item A needs B to be available
|
||
|
before its own build can start). It should be possible to specify these
|
||
|
dependencies in a declarative way.</p>
|
||
|
<p>Suppose a working build specification for system A is available. It should
|
||
|
be possible for system B to declare dependencies to <i>(modules of?)</i> system
|
||
|
A without touching the build specification of A. Ant should be able to handle
|
||
|
dependencies between modules which form a DAG.</p>
|
||
|
<p>It should be possible to modify details of the actual build (e.g. classpath,
|
||
|
used compiler) without the need to change the build specification. This
|
||
|
feature is needed when starting Ant (e.g. configuration with command line
|
||
|
parameters) and for a subproject build driven by the build of a dependent
|
||
|
project.</p>
|
||
|
<p>Often similar items have to be built. Therefore it should be possible
|
||
|
to provide general <i>(template?)</i> build specifications, and to declare for
|
||
|
a concrete item that it should be built according to such a general specification.</p>
|
||
|
<p>One result of the build process should be a log which shows what has been done.</p>
|
||
|
<h3>Requirements from the task developer perspective</h3>
|
||
|
<p>A task should not need to know the structure of a build specification.
|
||
|
It would have to provide an interface (not necessarily in the Java language
|
||
|
sense) for the Ant core to input the necessary configuration attributes
|
||
|
and to execute the task). There should be a standard functionality to allow
|
||
|
a task doing log output.</p>
|
||
|
<p>An interface (again not necessarily in the Java language sense) should
|
||
|
be provided which allows a task to get <i>(and set?)</i> information about it's
|
||
|
context in the build process.</p>
|
||
|
<h3>Requirements from the extensions developer perspective</h3>
|
||
|
<p>The Ant core should be independent from a specific representation of the
|
||
|
build specification. It should be possible to create a specification programmatically
|
||
|
(thereby allowing the introduction of new representations). The core should
|
||
|
do no in- or output itself. Build errors should always lead to throwing
|
||
|
an Exception.</p>
|
||
|
<p>Access to the current state of a build should be available, and its modification
|
||
|
possible.</p>
|
||
|
</body>
|
||
|
</html>
|
||
|
|