|
- <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>
|